From 5cd44c6526741dd09c450e508e23e1a7a74bf13d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 16 Nov 2020 18:29:13 +0800 Subject: [PATCH] msg --- controllers/event_controller.go | 34 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/controllers/event_controller.go b/controllers/event_controller.go index 2ade67280..d2f3db6ac 100644 --- a/controllers/event_controller.go +++ b/controllers/event_controller.go @@ -35,7 +35,7 @@ type EventController struct { var clients = make(map[int]map[string]*websocket.Conn) //广播频道(通道) -var broadcast = make(chan map[int]*model.ImMessageRecord) +var broadcast = make(chan *model.ImMessageRecord) // 配置升级程序(升级为websocket) var upgrader = websocket.Upgrader{} @@ -89,7 +89,6 @@ func (c *EventController) TestWebsocket() { defer ws.Close() var ( userID = c.GetString("userID") - msgMap = make(map[int]*model.ImMessageRecord) clientUser = make(map[string]*websocket.Conn) ) //将当前客户端放入map中 @@ -133,8 +132,7 @@ func (c *EventController) TestWebsocket() { break //结束循环 } else { //接受消息 业务逻辑 - msgMap[s.GroupID] = s - broadcast <- msgMap + broadcast <- s utils.CallFuncAsync(func() { dao.WrapAddIDCULDEntity(s, "") dao.CreateEntity(db, s) @@ -154,21 +152,19 @@ func handleMessages() { msg := <-broadcast globals.SugarLogger.Debugf("clients len %v", len(clients)) //循环map客户端 - for groupID, mmsg := range msg { - for userID, client := range clients[groupID] { - //把通道中的消息发送给客户端 - user, err := dao.GetUser(dao.GetDB(), mmsg.UserID) - if err == nil { - mmsg.UserInfo = user - } - globals.SugarLogger.Debugf("msg %v", utils.Format4Output(mmsg, false)) - err = client.WriteJSON(mmsg) - if err != nil { - globals.SugarLogger.Debugf("client.WriteJSON error: %v", err) - client.Close() //关闭 - delete(clients[mmsg.GroupID], userID) - // delete(clients, client) //删除map中的客户端 - } + for userID, client := range clients[msg.GroupID] { + //把通道中的消息发送给客户端 + user, err := dao.GetUser(dao.GetDB(), msg.UserID) + if err == nil { + msg.UserInfo = user + } + globals.SugarLogger.Debugf("msg %v", utils.Format4Output(msg, false)) + err = client.WriteJSON(msg) + if err != nil { + globals.SugarLogger.Debugf("client.WriteJSON error: %v", err) + client.Close() //关闭 + delete(clients[msg.GroupID], userID) + // delete(clients, client) //删除map中的客户端 } } }