From 78633ef914eccbdebb296c10e6b74bb07dff024d Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 27 Apr 2023 11:07:54 +0800 Subject: [PATCH] im3 --- controllers/im.go | 23 ++++++++++++++++++++--- controllers/im_model.go | 1 + main.go | 2 +- 3 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 controllers/im_model.go diff --git a/controllers/im.go b/controllers/im.go index 01aec4bd3..3409197a7 100644 --- a/controllers/im.go +++ b/controllers/im.go @@ -14,6 +14,8 @@ type IMController struct { web.Controller } +var maxMessageSize = int64(8192) // 最大的消息大小 + // @Title IM初始化长链接 // @Description IM初始化长链接 // @Success 200 {object} controllers.CallResult @@ -23,17 +25,32 @@ func (c *IMController) StartWebSocket() { upgrader.CheckOrigin = func(r *http.Request) bool { return true } - ws, err := upgrader.Upgrade(c.Ctx.ResponseWriter, c.Ctx.Request, nil) + conn, err := upgrader.Upgrade(c.Ctx.ResponseWriter, c.Ctx.Request, nil) if err != nil { globals.SugarLogger.Errorf("upgrade error: %v", err) return } - defer ws.Close() + defer conn.Close() clientID := c.GetString("clientID") globals.SugarLogger.Debugf("clientID=%s", clientID) - im.StartWebSocket(ws, clientID, err) + //设置读取消息大小上线 + conn.SetReadLimit(maxMessageSize) + + clientSocket := im.NewClient(clientID, conn) + + //读取客户端消息 + clientSocket.Read() + + if err = im.ConnRender(conn, im.RetData{Data: clientID}); err != nil { + _ = conn.Close() + return + } + + // 用户连接事件 + im.Manager.Connect <- clientSocket + } // @Title IM获取门店用户聊天列表 diff --git a/controllers/im_model.go b/controllers/im_model.go new file mode 100644 index 000000000..2d3293679 --- /dev/null +++ b/controllers/im_model.go @@ -0,0 +1 @@ +package controllers diff --git a/main.go b/main.go index fc3b848ba..7e233a897 100644 --- a/main.go +++ b/main.go @@ -97,7 +97,7 @@ func Init() { auto_delivery.Init() // 初始化骑手列表 im.Init() //初始化ws连接 - http.HandleFunc("/ws", im.Run) + //http.HandleFunc("/ws", im.Run) //test //mux := http.NewServeMux()