Skip to content

实时通信

本页概览 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>,也支持 query token
  • 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)。

基于 MIT 许可发布 · 由 ❤️ 和 ☕ 驱动 · 支持作者