diff --git a/business/partner/purchase/im/im_server.go b/business/partner/purchase/im/im_server.go index f374354c8..1ff6aeed5 100644 --- a/business/partner/purchase/im/im_server.go +++ b/business/partner/purchase/im/im_server.go @@ -3,6 +3,7 @@ package im import ( "errors" "fmt" + "net/http" "time" "git.rosy.net.cn/baseapi/utils" @@ -32,6 +33,39 @@ func Init() { fmt.Printf("服务器启动成功,端口号:%s\n", CommonSetting.HttpPort) } +func Run(w http.ResponseWriter, r *http.Request) { + conn, err := (&websocket.Upgrader{ + ReadBufferSize: 1024, + WriteBufferSize: 1024, + // 允许所有CORS跨域请求 + CheckOrigin: func(r *http.Request) bool { + return true + }, + }).Upgrade(w, r, nil) + if err != nil { + globals.SugarLogger.Debugf("upgrade error: %v", err) + http.NotFound(w, r) + return + } + + //设置读取消息大小上线 + conn.SetReadLimit(maxMessageSize) + + clientID := r.FormValue("clientId") + clientSocket := NewClient(clientID, conn) + + //读取客户端消息 + clientSocket.Read() + + if err = ConnRender(conn, renderData{ClientId: clientID}); err != nil { + _ = conn.Close() + return + } + + // 用户连接事件 + Manager.Connect <- clientSocket +} + func StartWebSocket(conn *websocket.Conn, clientID string, err error) { //设置读取消息大小上线 diff --git a/controllers/im.go b/controllers/im.go index d405b6b00..7c851a0f5 100644 --- a/controllers/im.go +++ b/controllers/im.go @@ -2,7 +2,6 @@ package controllers import ( "encoding/json" - "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/business/partner/purchase/im" "github.com/astaxie/beego/server/web" @@ -17,26 +16,18 @@ type IMController struct { // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /StartWebSocket [get] -func (c *IMController) StartWebSocket() { - ws, err := upgrader.Upgrade(c.Ctx.ResponseWriter, c.Ctx.Request, nil) - //ws, err := upgrader.Upgrade(c.Ctx.ResponseWriter, &http.Request{ - // Method: "GET", - // Header: http.Header{ - // "Upgrade": []string{"websocket"}, - // "Connection": []string{"upgrade"}, - // "Sec-Websocket-Key": []string{"dGhlIHNhbXBsZSBub25jZQ=="}, - // "Sec-Websocket-Version": []string{"13"}, - // }}, nil) - if err != nil { - globals.SugarLogger.Errorf("upgrade error: %v", err) - return - } - defer ws.Close() - - clientID := c.GetString("clientID") - globals.SugarLogger.Debugf("clientID=%s", clientID) - im.StartWebSocket(ws, clientID, err) -} +//func (c *IMController) StartWebSocket() { +// ws, err := upgrader.Upgrade(c.Ctx.ResponseWriter, c.Ctx.Request, nil) +// if err != nil { +// globals.SugarLogger.Errorf("upgrade error: %v", err) +// return +// } +// defer ws.Close() +// +// clientID := c.GetString("clientID") +// globals.SugarLogger.Debugf("clientID=%s", clientID) +// im.StartWebSocket(ws, clientID, err) +//} // @Title IM获取门店用户聊天列表 // @Description IM获取门店用户聊天列表 diff --git a/main.go b/main.go index 51fe7cc03..1bd4ddf57 100644 --- a/main.go +++ b/main.go @@ -97,7 +97,7 @@ func Init() { auto_delivery.Init() // 初始化骑手列表 go im.Init() //初始化ws连接 - //go http.HandleFunc("/v2/im/StartWebSocket", im.StartWebSocket) + go http.HandleFunc("/v2/im/StartWebSocket", im.Run) //test //mux := http.NewServeMux() diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 6e2ea4650..2c80a6074 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -4356,14 +4356,14 @@ func init() { MethodParams: param.Make(), Filters: nil, Params: nil}) - web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:IMController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:IMController"], - web.ControllerComments{ - Method: "StartWebSocket", - Router: `/StartWebSocket`, - AllowHTTPMethods: []string{"get"}, - MethodParams: param.Make(), - Filters: nil, - Params: nil}) + //web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:IMController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:IMController"], + // web.ControllerComments{ + // Method: "StartWebSocket", + // Router: `/StartWebSocket`, + // AllowHTTPMethods: []string{"get"}, + // MethodParams: param.Make(), + // Filters: nil, + // Params: nil}) //web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:FnController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:FnController"], // web.ControllerComments{