websotckty
This commit is contained in:
@@ -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)
|
||||||
@@ -90,7 +90,7 @@ func (c *EventController) TestWebsocket() {
|
|||||||
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中的客户端
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user