smsProcess.go

package process2

import (
“encoding/json”
“fmt”
“net”
)

type SmsProcess struct {
//…[暂时不需字段]

}
//写方法转发消息
func(this *SmsProcess)SendGroupMes(mes message.Message){
//遍历服务器的onlineUsers map[int]*UserProcess,
//将消息转发出去。

//取出mes的内容SmsMes
var smsMes message.SmsMes
err:=json.Unmarshal([]byte(mes.Data),&smsMes)
if err!=nil{
	fmt.Println("json.Unmarshal err",err)
	return
}

data,err:=json.Marshal(mes)
if err!=nil{
	fmt.Println("json.Marshal err=",err)
	return
}



for id,up:=range userMgr.onlineUsers{
	//这里,还需要过滤到自己,即不要再发给自己
	if id==smsMes.UserId{
		continue
	}
    this.SendMesToEachOnlineUser(smsMes.Content,up.Conn)
}

}

func (this *SmsProcess)SendMesToEachOnlineUser(date[]byte,conn net.Conn){
//离线留言,创建一个Transfer实例,发送data
tf:=&utils.Transfer{
Conn:conn,
}
err:=tf.WritePkg(data)
if err!=nil{
fmt.Println(“转发消息失败err=”,err)
}
}

你可能感兴趣的:(项目练习)