diff --git a/business/partner/purchase/im/im_server.go b/business/partner/purchase/im/im_server.go index 93b3a1c2a..c13fff35b 100644 --- a/business/partner/purchase/im/im_server.go +++ b/business/partner/purchase/im/im_server.go @@ -3,7 +3,6 @@ package im import ( "errors" "fmt" - "net/http" "time" "git.rosy.net.cn/baseapi/utils" @@ -33,40 +32,19 @@ func Init() { fmt.Printf("服务器启动成功,端口号:%s\n", CommonSetting.HttpPort) } -func StartWebSocket(w http.ResponseWriter, r *http.Request) { +var upgrader = websocket.Upgrader{} - conn, err := (&websocket.Upgrader{ - ReadBufferSize: 8182, - WriteBufferSize: 8182, - // 允许所有CORS跨域请求 - CheckOrigin: func(r *http.Request) bool { - return true - }, - }).Upgrade(w, r, nil) - - if err != nil { - globals.SugarLogger.Errorf("upgrade error: %v", err) - http.NotFound(w, r) - return - } +func StartWebSocket(conn *websocket.Conn, clientID string, err error) { //设置读取消息大小上线 conn.SetReadLimit(maxMessageSize) - clientId := "" - temp := r.Header["Clientid"] - if temp[0] != "" { - clientId = temp[0] - } else { - clientId = "defaultClientIDJXCS" - } - - clientSocket := NewClient(clientId, conn) + clientSocket := NewClient(clientID, conn) //读取客户端消息 clientSocket.Read() - if err = ConnRender(conn, renderData{ClientId: clientId}); err != nil { + if err = ConnRender(conn, renderData{ClientId: clientID}); err != nil { _ = conn.Close() return } diff --git a/controllers/im.go b/controllers/im.go index 421aafb8e..accbea480 100644 --- a/controllers/im.go +++ b/controllers/im.go @@ -2,6 +2,10 @@ package controllers import ( "encoding/json" + "net/http" + + "git.rosy.net.cn/jx-callback/globals" + "git.rosy.net.cn/jx-callback/business/partner/purchase/im" "github.com/astaxie/beego/server/web" ) @@ -16,7 +20,17 @@ type IMController struct { // @Failure 200 {object} controllers.CallResult // @router /StartWebSocket [get] func (c *IMController) StartWebSocket() { - im.StartWebSocket(c.Ctx.ResponseWriter, c.Ctx.Request) + upgrader.CheckOrigin = func(r *http.Request) bool { + return true + } + ws, err := upgrader.Upgrade(c.Ctx.ResponseWriter, c.Ctx.Request, nil) + if err != nil { + globals.SugarLogger.Errorf("upgrade error: %v", err) + return + } + clientID := c.GetString("clientID") + globals.SugarLogger.Debugf("clientID=%s", clientID) + im.StartWebSocket(ws, clientID, err) } // @Title IM获取门店用户聊天列表