diff --git a/controllers/event.go b/controllers/event.go index acd48c15a..a67d618bd 100644 --- a/controllers/event.go +++ b/controllers/event.go @@ -28,10 +28,10 @@ type EventController struct { } //连接的客户端,吧每个客户端都放进来 -var clients = make(map[string][]*websocket.Conn) +var clients = make(map[int][]*websocket.Conn) //广播频道(通道) -var broadcast = make(chan map[string]*model.ImMessageRecord) +var broadcast = make(chan map[int]*model.ImMessageRecord) // 配置升级程序(升级为websocket) var upgrader = websocket.Upgrader{} @@ -84,11 +84,12 @@ func (c *EventController) TestWebsocket() { } defer ws.Close() var ( - vendorOrderID = c.GetString("userID") - msgMap = make(map[string]*model.ImMessageRecord) + // userID = c.GetString("userID") + msgMap = make(map[int]*model.ImMessageRecord) + groupID int ) //将当前客户端放入map中 - clients[vendorOrderID] = append(clients[vendorOrderID], ws) + // clients[vendorOrderID] = append(clients[vendorOrderID], ws) db := dao.GetDB() if globals.IsProductEnv() { @@ -102,30 +103,30 @@ func (c *EventController) TestWebsocket() { } } - //找到当前用户的组 c.EnableRender = false //Beego不启用渲染 var s *model.ImMessageRecord for { //接收客户端的消息 err := ws.ReadJSON(&s) + clients[s.GroupID] = append(clients[s.GroupID], ws) if err != nil { globals.SugarLogger.Debugf("页面可能断开啦 ws.ReadJSON error: %v", err.Error()) index := 0 - for k, v := range clients[vendorOrderID] { + for k, v := range clients[groupID] { if v == ws { index = k } } - wsList := clients[vendorOrderID] - clients[vendorOrderID] = clients[vendorOrderID][0:0] - clients[vendorOrderID] = append(clients[vendorOrderID], wsList[0:index]...) - clients[vendorOrderID] = append(clients[vendorOrderID], wsList[index+1:len(wsList)]...) + wsList := clients[groupID] + clients[groupID] = clients[groupID][0:0] + clients[groupID] = append(clients[groupID], wsList[0:index]...) + clients[groupID] = append(clients[groupID], wsList[index+1:len(wsList)]...) // delete(clients, ws) //删除map中的客户端 break //结束循环 } else { //接受消息 业务逻辑 - msgMap[vendorOrderID] = s + msgMap[s.GroupID] = s broadcast <- msgMap dao.WrapAddIDCULDEntity(s, "") dao.CreateEntity(db, s) @@ -145,8 +146,8 @@ func handleMessages() { msg := <-broadcast globals.SugarLogger.Debugf("clients len %v", len(clients)) //循环map客户端 - for vendorOrderID, mmsg := range msg { - for _, client := range clients[vendorOrderID] { + for groupID, mmsg := range msg { + for _, client := range clients[groupID] { //把通道中的消息发送给客户端 globals.SugarLogger.Debugf("msg %v", utils.Format4Output(mmsg, false)) err := client.WriteJSON(mmsg) @@ -154,15 +155,15 @@ func handleMessages() { globals.SugarLogger.Debugf("client.WriteJSON error: %v", err) client.Close() //关闭 index := 0 - for k, v := range clients[vendorOrderID] { + for k, v := range clients[groupID] { if v == client { index = k } } - wsList := clients[vendorOrderID] - clients[vendorOrderID] = clients[vendorOrderID][0:0] - clients[vendorOrderID] = append(clients[vendorOrderID], wsList[0:index]...) - clients[vendorOrderID] = append(clients[vendorOrderID], wsList[index+1:len(wsList)]...) + wsList := clients[groupID] + clients[groupID] = clients[groupID][0:0] + clients[groupID] = append(clients[groupID], wsList[0:index]...) + clients[groupID] = append(clients[groupID], wsList[index+1:len(wsList)]...) // delete(clients, client) //删除map中的客户端 } } @@ -193,5 +194,7 @@ func (c *EventController) GetImMessageRecord() { // @Failure 200 {object} controllers.CallResult // @router /AddMessageGroup [post] func (c *EventController) AddMessageGroup() { - + c.callAddMessageGroup(func(params *tEventAddMessageGroupParams) (retVal interface{}, errCode string, err error) { + return retVal, "", err + }) }