WorldWebSocketStart.go_bak 1.37 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 *WorldClientManager) WorldWebSocketStart() {

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

			_ = conn.Socket.WriteMessage(websocket.TextMessage, msg)

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

				delete(WorldManager.Client, utils.Strval(conn.WorldConversations.Uid))
			}
			//广播信息

		}
		//
	}
}