websotckty

This commit is contained in:
苏尹岚
2020-11-13 09:26:38 +08:00
parent 01d9af671d
commit 7fd07db556

View File

@@ -32,7 +32,7 @@ type EventController struct {
} }
//连接的客户端,吧每个客户端都放进来 //连接的客户端,吧每个客户端都放进来
var clients = make(map[int][]*websocket.Conn) var clients = make(map[int]map[string]*websocket.Conn)
//广播频道(通道) //广播频道(通道)
var broadcast = make(chan map[int]*model.ImMessageRecord) var broadcast = make(chan map[int]*model.ImMessageRecord)
@@ -88,9 +88,9 @@ 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) msgMap = make(map[int]*model.ImMessageRecord)
groupID int clientUser = make(map[string]*websocket.Conn)
) )
//将当前客户端放入map中 //将当前客户端放入map中
messageGroups, _ := dao.GetUserMessageGroups(dao.GetDB(), userID) messageGroups, _ := dao.GetUserMessageGroups(dao.GetDB(), userID)
@@ -98,7 +98,8 @@ func (c *EventController) TestWebsocket() {
return return
} }
for _, v := range messageGroups { for _, v := range messageGroups {
clients[v.GroupID] = append(clients[v.GroupID], ws) clientUser[userID] = ws
clients[v.GroupID] = clientUser
} }
db := dao.GetDB() db := dao.GetDB()
if globals.IsProductEnv() { if globals.IsProductEnv() {
@@ -121,18 +122,7 @@ func (c *EventController) TestWebsocket() {
err := ws.ReadJSON(&s) err := ws.ReadJSON(&s)
if err != nil { if err != nil {
globals.SugarLogger.Debugf("页面可能断开啦 ws.ReadJSON error: %v", err.Error()) globals.SugarLogger.Debugf("页面可能断开啦 ws.ReadJSON error: %v", err.Error())
index := 0 delete(clients[s.GroupID], s.UserID)
for k, v := range clients[groupID] {
if v == ws {
index = k
}
}
wsList := clients[groupID]
if len(wsList) > 0 {
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中的客户端 // delete(clients, ws) //删除map中的客户端
break //结束循环 break //结束循环
} else { } else {
@@ -170,18 +160,7 @@ func handleMessages() {
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() //关闭
index := 0 delete(clients[mmsg.GroupID], mmsg.UserID)
for k, v := range clients[groupID] {
if v == client {
index = k
}
}
wsList := clients[groupID]
if len(wsList) > 0 {
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中的客户端 // delete(clients, client) //删除map中的客户端
} }
} }