前后端实时通信
前后端实时通信
#type / moc
#status / growing
#tech / network
[!info] related notes
- 相关 MOC: HTTP 与前端网络请求, 后端开发 MOC
- 相关概念: 前后端数据同步
- 相关方案: sse, web-socket, polling, push-api-service-worker
前后端实时通信
基础概念
在需要服务器主动向客户端推送数据的场景中(如调度提醒、实时通知等),有多种技术方案可以实现前后端实时通信。本文档详细介绍了各种方案的原理、优缺点、适用场景和实现方式。
方案对比总结
| 方案 | 实时性 | 实现复杂度 | 兼容性 | 服务器负载 | 离线支持 | 双向通信 |
|------|--------|------------|--------|------------|----------|----------|
| SSE | 高 | 低 | 好 | 中 | 否 | 否 |
| WebSocket | 极高 | 中 | 好 | 低 | 否 | 是 |
| 轮询 | 低 | 极低 | 极好 | 高 | 否 | 否 |
| 长轮询 | 中 | 中 | 好 | 中 | 否 | 否 |
| GraphQL订阅 | 高 | 高 | 中 | 低 | 否 | 是 |
| WebRTC | 极高 | 极高 | 中 | 极低 | 否 | 是 |
| Push API | 中 | 高 | 中 | 极低 | 是 | 否 |
使用指南
对于调度提醒系统,建议采用 SSE 作为主要方案,Push API 作为离线补充,长轮询作为降级方案 的组合策略。这样可以在保证实时性的同时,提供最佳的用户体验和系统可靠性。
不同的应用场景应该选择最适合的通信方案:
- 简单通知推送:SSE
- 实时协作应用:WebSocket
- 兼容性要求高:轮询/长轮询
- 离线通知需求:Push API
- 低延迟要求:WebRTC
- GraphQL 项目:GraphQL Subscriptions
选择方案时需要综合考虑项目需求、技术栈、团队能力和维护成本等因素。