// Package controller - WebSocket控制器 // 功能:WebSocket连接管理、实时消息推送 package controller import ( "context" "customer-server/model/dto" "customer-server/service" "github.com/gogf/gf/v2/frame/g" ) var Websocket = new(websocket) type websocket struct{} // Connect WebSocket连接 // 参数: req - WebSocket连接请求,包含用户ID和平台信息 // 返回: res - 连接结果(实际通过WebSocket协议通信) // 功能: 升级HTTP连接为WebSocket,建立实时通信通道 func (c *websocket) Connect(ctx context.Context, req *dto.WebSocketConnectReq) (res *dto.WebSocketConnectRes, err error) { r := g.RequestFromCtx(ctx) err = service.WebSocket.Connect(ctx, r, req.UserId, req.Platform) return } // Send 发送消息到Redis Stream // 参数: req - 发送消息请求,包含用户ID、内容等 // 返回: res - 发送结果,包含消息ID // 功能: 将用户消息推送到Redis Stream,由RAGFlow处理器消费 func (c *websocket) Send(ctx context.Context, req *dto.WebSocketSendReq) (res *dto.WebSocketSendRes, err error) { res, err = service.WebSocket.Send(ctx, req) return } // Broadcast 广播消息给所有连接 // 参数: req - 广播请求,包含广播内容 // 返回: res - 广播结果(空响应) // 功能: 向所有在线WebSocket连接广播消息 func (c *websocket) Broadcast(ctx context.Context, req *dto.WebSocketBroadcastReq) (res *dto.WebSocketBroadcastRes, err error) { service.WebSocket.Broadcast(ctx, req.Content) return } // Online 获取在线用户 // 参数: req - 查询请求(无参数) // 返回: res - 在线用户列表 // 功能: 查询当前所有WebSocket在线用户信息 func (c *websocket) Online(ctx context.Context, req *dto.WebSocketOnlineReq) (res *dto.WebSocketOnlineRes, err error) { res = service.WebSocket.GetOnlineUsers() return }