From dc401ae174ac3e522916932698c4399f2b042a27 Mon Sep 17 00:00:00 2001 From: taoshihan1991 <630892807@qq.com> Date: Wed, 21 Oct 2020 15:03:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=97=E4=BD=99=E5=90=8C=E6=AD=A5=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E6=96=B0ws?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/chat.go | 8 ++++++++ websocket/user.go | 23 ++++++++++++++++------- websocket/ws.go | 14 +++++++------- 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/controller/chat.go b/controller/chat.go index f15d1e4..80bd17e 100644 --- a/controller/chat.go +++ b/controller/chat.go @@ -5,6 +5,7 @@ import ( "github.com/gin-gonic/gin" "github.com/gorilla/websocket" "github.com/taoshihan1991/imaptool/models" + myws "github.com/taoshihan1991/imaptool/websocket" "log" "sort" "time" @@ -282,6 +283,13 @@ func singleBroadcaster() { 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"]) sendPingOnlineUsers() diff --git a/websocket/user.go b/websocket/user.go index 02483d4..14be27e 100644 --- a/websocket/user.go +++ b/websocket/user.go @@ -36,10 +36,10 @@ func NewKefuServer(c *gin.Context) { //获取GET参数,创建WS var kefu User - kefu.id = kefuInfo.Name - kefu.name = kefuInfo.Nickname - kefu.avator = kefuInfo.Avator - kefu.conn = conn + kefu.Id = kefuInfo.Name + kefu.Name = kefuInfo.Nickname + kefu.Avator = kefuInfo.Avator + kefu.Conn = conn AddKefuToList(&kefu) message <- &Message{ @@ -52,11 +52,20 @@ func NewKefuServer(c *gin.Context) { } func AddKefuToList(kefu *User) { var newKefuConns = []*User{kefu} - kefuConns := kefuList[kefu.id] + kefuConns := KefuList[kefu.Id] 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 } //后端广播发送消息 diff --git a/websocket/ws.go b/websocket/ws.go index a46c191..3edeaaa 100644 --- a/websocket/ws.go +++ b/websocket/ws.go @@ -6,11 +6,11 @@ import ( ) type User struct { - conn *websocket.Conn - name string - id string - avator string - to_id string + Conn *websocket.Conn + Name string + Id string + Avator string + To_id string } type Message struct { conn *websocket.Conn @@ -36,8 +36,8 @@ type ClientMessage struct { Refer string `json:"refer"` } -var clientList = make(map[string]*User) -var kefuList = make(map[string][]*User) +var ClientList = make(map[string]*User) +var KefuList = make(map[string][]*User) var message = make(chan *Message) var upgrader = websocket.Upgrader{}