Skip to content

实时通信

当你需要“在线用户数/通知推送/前端实时刷新”能力时,从这篇开始。

youlai-django 当前采用 SSE(Server-Sent Events) 提供实时能力(不是 WebSocket)。前端建立长连接后,后端可向客户端推送事件。

接口说明

SSE 连接

text
GET /api/v1/message/connect
  • 认证:需要登录(Authorization: Bearer <accessToken>
  • 响应:text/event-stream

服务端会:

  • 建立连接并注册当前用户
  • 首次推送 online-count 事件
  • 周期性发送心跳(防止连接被中间层回收)

在线人数

text
GET /api/v1/message/online-count

常见问题

1) 连接后马上断开

  • 确认反向代理未缓存/未缓冲 SSE(Nginx 需要关闭 buffering)
  • 需要保持长连接,确认网关/代理/浏览器未限制连接时间

2) 一直收不到事件

  • SSE 是单向(服务端 -> 客户端),请确认前端以 EventSource 方式订阅
  • 如果使用 Nginx,确认已允许 text/event-stream 并禁用缓存

代码位置

  • 路由:apps/message/urls.py
  • SSE 视图:apps/message/views.pySseConnectView / OnlineCountView

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