This commit is contained in:
苏尹岚
2020-11-16 18:29:13 +08:00
parent 4eb0730605
commit 5cd44c6526

View File

@@ -35,7 +35,7 @@ type EventController struct {
var clients = make(map[int]map[string]*websocket.Conn) var clients = make(map[int]map[string]*websocket.Conn)
//广播频道(通道) //广播频道(通道)
var broadcast = make(chan map[int]*model.ImMessageRecord) var broadcast = make(chan *model.ImMessageRecord)
// 配置升级程序(升级为websocket) // 配置升级程序(升级为websocket)
var upgrader = websocket.Upgrader{} var upgrader = websocket.Upgrader{}
@@ -89,7 +89,6 @@ func (c *EventController) TestWebsocket() {
defer ws.Close() defer ws.Close()
var ( var (
userID = c.GetString("userID") userID = c.GetString("userID")
msgMap = make(map[int]*model.ImMessageRecord)
clientUser = make(map[string]*websocket.Conn) clientUser = make(map[string]*websocket.Conn)
) )
//将当前客户端放入map中 //将当前客户端放入map中
@@ -133,8 +132,7 @@ func (c *EventController) TestWebsocket() {
break //结束循环 break //结束循环
} else { } else {
//接受消息 业务逻辑 //接受消息 业务逻辑
msgMap[s.GroupID] = s broadcast <- s
broadcast <- msgMap
utils.CallFuncAsync(func() { utils.CallFuncAsync(func() {
dao.WrapAddIDCULDEntity(s, "") dao.WrapAddIDCULDEntity(s, "")
dao.CreateEntity(db, s) dao.CreateEntity(db, s)
@@ -154,21 +152,19 @@ func handleMessages() {
msg := <-broadcast msg := <-broadcast
globals.SugarLogger.Debugf("clients len %v", len(clients)) globals.SugarLogger.Debugf("clients len %v", len(clients))
//循环map客户端 //循环map客户端
for groupID, mmsg := range msg { for userID, client := range clients[msg.GroupID] {
for userID, client := range clients[groupID] { //把通道中的消息发送给客户端
//把通道中的消息发送给客户端 user, err := dao.GetUser(dao.GetDB(), msg.UserID)
user, err := dao.GetUser(dao.GetDB(), mmsg.UserID) if err == nil {
if err == nil { msg.UserInfo = user
mmsg.UserInfo = user }
} globals.SugarLogger.Debugf("msg %v", utils.Format4Output(msg, false))
globals.SugarLogger.Debugf("msg %v", utils.Format4Output(mmsg, false)) err = client.WriteJSON(msg)
err = client.WriteJSON(mmsg) if err != nil {
if err != nil { globals.SugarLogger.Debugf("client.WriteJSON error: %v", err)
globals.SugarLogger.Debugf("client.WriteJSON error: %v", err) client.Close() //关闭
client.Close() //关闭 delete(clients[msg.GroupID], userID)
delete(clients[mmsg.GroupID], userID) // delete(clients, client) //删除map中的客户端
// delete(clients, client) //删除map中的客户端
}
} }
} }
} }