冗余同步通知新ws

pull/23/head
taoshihan1991 4 years ago
parent c63f7332d7
commit dc401ae174

@ -5,6 +5,7 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/gorilla/websocket" "github.com/gorilla/websocket"
"github.com/taoshihan1991/imaptool/models" "github.com/taoshihan1991/imaptool/models"
myws "github.com/taoshihan1991/imaptool/websocket"
"log" "log"
"sort" "sort"
"time" "time"
@ -282,6 +283,13 @@ func singleBroadcaster() {
kefuConn.WriteMessage(websocket.TextMessage, str) kefuConn.WriteMessage(websocket.TextMessage, str)
} }
} }
mKefuConns := myws.KefuList[user.to_id]
if mKefuConns != nil {
for k, kefu := range mKefuConns {
log.Println(k, "xxxxxxxx")
kefu.Conn.WriteMessage(websocket.TextMessage, str)
}
}
//客户上线发微信通知 //客户上线发微信通知
go SendServerJiang(userInfo["username"]) go SendServerJiang(userInfo["username"])
sendPingOnlineUsers() sendPingOnlineUsers()

@ -36,10 +36,10 @@ func NewKefuServer(c *gin.Context) {
//获取GET参数,创建WS //获取GET参数,创建WS
var kefu User var kefu User
kefu.id = kefuInfo.Name kefu.Id = kefuInfo.Name
kefu.name = kefuInfo.Nickname kefu.Name = kefuInfo.Nickname
kefu.avator = kefuInfo.Avator kefu.Avator = kefuInfo.Avator
kefu.conn = conn kefu.Conn = conn
AddKefuToList(&kefu) AddKefuToList(&kefu)
message <- &Message{ message <- &Message{
@ -52,11 +52,20 @@ func NewKefuServer(c *gin.Context) {
} }
func AddKefuToList(kefu *User) { func AddKefuToList(kefu *User) {
var newKefuConns = []*User{kefu} var newKefuConns = []*User{kefu}
kefuConns := kefuList[kefu.id] kefuConns := KefuList[kefu.Id]
if kefuConns != nil { if kefuConns != nil {
newKefuConns = append(newKefuConns, kefuConns...) for _, kefu := range kefuConns {
msg := TypeMessage{
Type: "pong",
}
str, _ := json.Marshal(msg)
err := kefu.Conn.WriteMessage(websocket.TextMessage, str)
if err != nil {
newKefuConns = append(newKefuConns, kefu)
}
}
} }
kefuList[kefu.id] = newKefuConns KefuList[kefu.Id] = newKefuConns
} }
//后端广播发送消息 //后端广播发送消息

@ -6,11 +6,11 @@ import (
) )
type User struct { type User struct {
conn *websocket.Conn Conn *websocket.Conn
name string Name string
id string Id string
avator string Avator string
to_id string To_id string
} }
type Message struct { type Message struct {
conn *websocket.Conn conn *websocket.Conn
@ -36,8 +36,8 @@ type ClientMessage struct {
Refer string `json:"refer"` Refer string `json:"refer"`
} }
var clientList = make(map[string]*User) var ClientList = make(map[string]*User)
var kefuList = make(map[string][]*User) var KefuList = make(map[string][]*User)
var message = make(chan *Message) var message = make(chan *Message)
var upgrader = websocket.Upgrader{} var upgrader = websocket.Upgrader{}

Loading…
Cancel
Save