Files
customer-server/controller/websocket_controller.go
2026-03-14 10:02:49 +08:00

53 lines
1.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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
}