package controller import ( "aiChat/internal/model" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/net/ghttp" ) // ChatWs 聊天websocket请求 var ChatWs = func(r *ghttp.Request) { session, _ := model.GetSession(r) model.SessionCtx.Init(r, &model.Context{ JSession: session, }) wsChat := model.NewMessage(r.Context()) // 创建ws链接 ws, err := r.WebSocket() if err != nil { g.Log().Error(wsChat.Ctx, session.PositionId, "建立连接出错", err) r.Exit() } if session.PositionId == 0 { _ = ws.WriteJSON(g.Map{ "error_code": -1, "error_msg": "请登录", }) return } for { // 接受客户端信息 _, msg, err := ws.ReadMessage() if err != nil { g.Log().Info(wsChat.Ctx, session.PositionId, "接收消息出错", err) _ = ws.Close() return } // 处理ws wsChat.Handle(ws, msg) } }