Skip to content

消息推送端点,SSE / WebSocket 可配,按 userID + token 归档连接。Handler 必须注册在登录校验路由组内(依赖 sagin.CheckLogin 拿到的 token 做归档键)。

关键导出

  • Handler() gin.HandlerFunc 推送连接端点(按配置选 SSE/WS),必须注册在登录校验路由组内
  • CloseHandler() gin.HandlerFunc 主动断开当前连接
  • Init() / Shutdown() / Default() *Manager
  • (m *Manager) Send(...) / Publish(...) 投递消息

典型用法

go
// internal/resource/router.go:127
sagin.CheckLogin(), push.Handler()

坑/约定

WARNING

  • upgrader.CheckOrigin 恒放行——CORS 中间件管不到 WS 握手,浏览器对 ws:// 不发预检。
  • SSE 必须在 handler 内阻塞泵消息(handler 一返回 net/http 就结束响应体)。
  • SSE 到超时上限主动收流,由前端 EventSource 重连(不留常驻连接)。
  • WS 不设读超时,靠 monitor 的 ping 探活。
  • isPing 同时认裸串 "ping"{"type":"ping"}(前端发 JSON)。 :::

相关页:/modules/resource/pkg-reference/satoken/architecture/request-flow

基于 MIT 协议开源