实时通信
当你需要“在线用户数/通知推送/前端实时刷新”能力时,从这篇开始。
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.py(SseConnectView/OnlineCountView)
