event
This commit is contained in:
@@ -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)
|
// 配置升级程序(升级为websocket)
|
||||||
var upgrader = websocket.Upgrader{}
|
var upgrader = websocket.Upgrader{}
|
||||||
@@ -84,11 +84,12 @@ func (c *EventController) TestWebsocket() {
|
|||||||
}
|
}
|
||||||
defer ws.Close()
|
defer ws.Close()
|
||||||
var (
|
var (
|
||||||
vendorOrderID = c.GetString("userID")
|
// userID = c.GetString("userID")
|
||||||
msgMap = make(map[string]*model.ImMessageRecord)
|
msgMap = make(map[int]*model.ImMessageRecord)
|
||||||
|
groupID int
|
||||||
)
|
)
|
||||||
//将当前客户端放入map中
|
//将当前客户端放入map中
|
||||||
clients[vendorOrderID] = append(clients[vendorOrderID], ws)
|
// clients[vendorOrderID] = append(clients[vendorOrderID], ws)
|
||||||
|
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
if globals.IsProductEnv() {
|
if globals.IsProductEnv() {
|
||||||
@@ -102,30 +103,30 @@ func (c *EventController) TestWebsocket() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//找到当前用户的组
|
|
||||||
c.EnableRender = false //Beego不启用渲染
|
c.EnableRender = false //Beego不启用渲染
|
||||||
|
|
||||||
var s *model.ImMessageRecord
|
var s *model.ImMessageRecord
|
||||||
for {
|
for {
|
||||||
//接收客户端的消息
|
//接收客户端的消息
|
||||||
err := ws.ReadJSON(&s)
|
err := ws.ReadJSON(&s)
|
||||||
|
clients[s.GroupID] = append(clients[s.GroupID], ws)
|
||||||
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
|
index := 0
|
||||||
for k, v := range clients[vendorOrderID] {
|
for k, v := range clients[groupID] {
|
||||||
if v == ws {
|
if v == ws {
|
||||||
index = k
|
index = k
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wsList := clients[vendorOrderID]
|
wsList := clients[groupID]
|
||||||
clients[vendorOrderID] = clients[vendorOrderID][0:0]
|
clients[groupID] = clients[groupID][0:0]
|
||||||
clients[vendorOrderID] = append(clients[vendorOrderID], wsList[0:index]...)
|
clients[groupID] = append(clients[groupID], wsList[0:index]...)
|
||||||
clients[vendorOrderID] = append(clients[vendorOrderID], wsList[index+1:len(wsList)]...)
|
clients[groupID] = append(clients[groupID], wsList[index+1:len(wsList)]...)
|
||||||
// delete(clients, ws) //删除map中的客户端
|
// delete(clients, ws) //删除map中的客户端
|
||||||
break //结束循环
|
break //结束循环
|
||||||
} else {
|
} else {
|
||||||
//接受消息 业务逻辑
|
//接受消息 业务逻辑
|
||||||
msgMap[vendorOrderID] = s
|
msgMap[s.GroupID] = s
|
||||||
broadcast <- msgMap
|
broadcast <- msgMap
|
||||||
dao.WrapAddIDCULDEntity(s, "")
|
dao.WrapAddIDCULDEntity(s, "")
|
||||||
dao.CreateEntity(db, s)
|
dao.CreateEntity(db, s)
|
||||||
@@ -145,8 +146,8 @@ func handleMessages() {
|
|||||||
msg := <-broadcast
|
msg := <-broadcast
|
||||||
globals.SugarLogger.Debugf("clients len %v", len(clients))
|
globals.SugarLogger.Debugf("clients len %v", len(clients))
|
||||||
//循环map客户端
|
//循环map客户端
|
||||||
for vendorOrderID, mmsg := range msg {
|
for groupID, mmsg := range msg {
|
||||||
for _, client := range clients[vendorOrderID] {
|
for _, client := range clients[groupID] {
|
||||||
//把通道中的消息发送给客户端
|
//把通道中的消息发送给客户端
|
||||||
globals.SugarLogger.Debugf("msg %v", utils.Format4Output(mmsg, false))
|
globals.SugarLogger.Debugf("msg %v", utils.Format4Output(mmsg, false))
|
||||||
err := client.WriteJSON(mmsg)
|
err := client.WriteJSON(mmsg)
|
||||||
@@ -154,15 +155,15 @@ func handleMessages() {
|
|||||||
globals.SugarLogger.Debugf("client.WriteJSON error: %v", err)
|
globals.SugarLogger.Debugf("client.WriteJSON error: %v", err)
|
||||||
client.Close() //关闭
|
client.Close() //关闭
|
||||||
index := 0
|
index := 0
|
||||||
for k, v := range clients[vendorOrderID] {
|
for k, v := range clients[groupID] {
|
||||||
if v == client {
|
if v == client {
|
||||||
index = k
|
index = k
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wsList := clients[vendorOrderID]
|
wsList := clients[groupID]
|
||||||
clients[vendorOrderID] = clients[vendorOrderID][0:0]
|
clients[groupID] = clients[groupID][0:0]
|
||||||
clients[vendorOrderID] = append(clients[vendorOrderID], wsList[0:index]...)
|
clients[groupID] = append(clients[groupID], wsList[0:index]...)
|
||||||
clients[vendorOrderID] = append(clients[vendorOrderID], wsList[index+1:len(wsList)]...)
|
clients[groupID] = append(clients[groupID], wsList[index+1:len(wsList)]...)
|
||||||
// delete(clients, client) //删除map中的客户端
|
// delete(clients, client) //删除map中的客户端
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -193,5 +194,7 @@ func (c *EventController) GetImMessageRecord() {
|
|||||||
// @Failure 200 {object} controllers.CallResult
|
// @Failure 200 {object} controllers.CallResult
|
||||||
// @router /AddMessageGroup [post]
|
// @router /AddMessageGroup [post]
|
||||||
func (c *EventController) AddMessageGroup() {
|
func (c *EventController) AddMessageGroup() {
|
||||||
|
c.callAddMessageGroup(func(params *tEventAddMessageGroupParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user