Files
customer-server/controller/websocket_controller.go

53 lines
1.8 KiB
Go
Raw Permalink Normal View History

2026-03-14 10:02:49 +08:00
// 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
}