实时通信
本页概览 youlai-gin 的实时通信能力,核心基于 SSE(Server-Sent Events)实现。
覆盖能力
- 建立 SSE 长连接接收服务端事件推送
- 在线人数统计
- 字典变更通知、系统消息推送等(服务端广播/单播)
关键实现
- 路由:
internal/message/handler.go - SSE 服务:
internal/message/service.go - 路由注册:
internal/router/register.go
接口
GET /api/v1/sse/connect- 建立 SSE 连接(返回
text/event-stream) - 鉴权:优先读取 Header
Authorization: Bearer <accessToken>,也支持 querytoken
- 建立 SSE 连接(返回
GET /api/v1/sse/online-count- 获取在线用户数(JSON)
事件与数据
服务端通过 event: <name> + data: <json> 发送事件。
示例(在线人数):
json
3示例(系统消息):
json
{
"sender": "系统通知",
"content": "...",
"timestamp": 1710000000000
}心跳与断开
- 服务端每 15 秒发送一次心跳(
comment行)用于保持连接。 - 应用关闭时会主动断开全部连接:
message.GetSseService().CloseAll()(见main.go)。
