WebSocketStart.go 1.29 KB
Newer Older
Ford committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
package service

import (
	//"chat/conf"
	"WorldEpcho/src/config/e"
	"WorldEpcho/src/utils"
	"encoding/json"
	"fmt"
	_ "fmt"
	//"github.com/gin-gonic/gin/binding"

	"github.com/gorilla/websocket"
	"log"
)

func (manager *ClientManager) WebSocketStart() {

	for {
		log.Println("<---监听管道通信--->")
		select {
		case conn := <-Manager.Register: // 建立连接
			log.Printf("建立新连接: %v", conn.Conversation.Uid)
			Manager.Clients[utils.Strval(conn.Conversation.Uid)] = conn
			replyMsg := &ReplyMsg{
				Code:    e.WebsocketSuccess,
				Content: "已连接至服务器",
			}
			fmt.Println("Manager.Clients: ", Manager.Clients)
			//这里调用记忆文件方法

			msg, _ := json.Marshal(replyMsg)
			_ = conn.Socket.WriteMessage(websocket.TextMessage, msg)

		case conn := <-Manager.Unregister: // 断开连接
			log.Printf("连接失败:%v", conn.Conversation.Uid)
			if _, ok := Manager.Clients[utils.Strval(conn.Conversation.Uid)]; ok {
				replyMsg := &ReplyMsg{
					Code:    e.WebsocketEnd,
					Content: "连接已断开",
				}
				msg, _ := json.Marshal(replyMsg)
				_ = conn.Socket.WriteMessage(websocket.TextMessage, msg)
				//if conn.Send != nil {
				//	close(conn.Send)
				//}

				delete(Manager.Clients, utils.Strval(conn.Conversation.Uid))
			}
			//广播信息

		}
		//
	}
}