diff --git a/controllers/event_controller.go b/controllers/event_controller.go index 1d9727635..f41121624 100644 --- a/controllers/event_controller.go +++ b/controllers/event_controller.go @@ -32,18 +32,16 @@ type EventController struct { //连接的客户端,吧每个客户端都放进来 var clients = make(map[int]map[string]*websocket.Conn) -var heartClients = make(map[string]*websocket.Conn) //广播频道(通道) var broadcast = make(chan *model.ImMessageRecord) -var heartbit = make(chan *Message) // 配置升级程序(升级为websocket) var upgrader = websocket.Upgrader{} +// 定义我们的消息对象 type Message struct { - UserID string `json:"userID"` - Data string `json:"data"` + Data interface{} `json:"data"` } // @Title 测试websocket @@ -75,7 +73,6 @@ func (c *EventController) TestWebsocket() { if len(messageGroups) == 0 { return } - heartClients[userID] = ws clientUser[userID] = ws for _, v := range messageGroups { if len(clients[v.GroupID]) > 0 { @@ -104,21 +101,12 @@ func (c *EventController) TestWebsocket() { //接收客户端的消息 err := ws.ReadJSON(&s) if err != nil { - fmt.Println("11111111111111111111111111111111111111111111111111111111111111111111") - var m *Message - if err2 := ws.ReadJSON(&m); err2 == nil { - fmt.Println("22222222222222222222222222222222222222222222222222222", utils.Format4Output(m, false)) - m.UserID = userID - heartbit <- m - } else { - fmt.Println("22222222222222222222222222222222222222222222222222222", err) - globals.SugarLogger.Debugf("页面可能断开啦 ws.ReadJSON error: %v", err.Error()) - for k, _ := range clients { - delete(clients[k], userID) - } - delete(heartClients, userID) - break //结束循环 + globals.SugarLogger.Debugf("页面可能断开啦 ws.ReadJSON error: %v", err.Error()) + for k, _ := range clients { + delete(clients[k], userID) } + // delete(clients, ws) //删除map中的客户端 + break //结束循环 } else { //接受消息 业务逻辑 broadcast <- s @@ -157,35 +145,23 @@ func init() { //广播推送消息 func handleMessages() { for { - select { //读取通道中的消息 - case msg := <-broadcast: - globals.SugarLogger.Debugf("clients len %v", len(clients)) - //循环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中的客户端 - } + msg := <-broadcast + globals.SugarLogger.Debugf("clients len %v", len(clients)) + //循环map客户端 + for userID, client := range clients[msg.GroupID] { + //把通道中的消息发送给客户端 + user, err := dao.GetUser(dao.GetDB(), msg.UserID) + if err == nil { + msg.UserInfo = user } - case h := <-heartbit: - fmt.Println("33333333333333333333333333333333333333333333333333", utils.Format4Output(h, false)) - globals.SugarLogger.Debugf("h %v", utils.Format4Output(h, false)) - if err := heartClients[h.UserID].WriteJSON(&Message{ - Data: "pang", - }); err != nil { - globals.SugarLogger.Debugf("userheart client.WriteJSON error: %v", err) - heartClients[h.UserID].Close() - delete(heartClients, h.UserID) + 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中的客户端 } } }