前后端实时通信

前后端实时通信

#type / moc #status / growing #tech / network

[!info] related notes

前后端实时通信

基础概念

在需要服务器主动向客户端推送数据的场景中(如调度提醒、实时通知等),有多种技术方案可以实现前后端实时通信。本文档详细介绍了各种方案的原理、优缺点、适用场景和实现方式。

  1. sse
  2. web-socket
  3. polling
  4. graphql-subscriptions
  5. push-api-service-worker
  6. webrtc-data-channels

方案对比总结

| 方案 | 实时性 | 实现复杂度 | 兼容性 | 服务器负载 | 离线支持 | 双向通信 |

|------|--------|------------|--------|------------|----------|----------|

| SSE | 高 | 低 | 好 | 中 | 否 | 否 |

| WebSocket | 极高 | 中 | 好 | 低 | 否 | 是 |

| 轮询 | 低 | 极低 | 极好 | 高 | 否 | 否 |

| 长轮询 | 中 | 中 | 好 | 中 | 否 | 否 |

| GraphQL订阅 | 高 | 高 | 中 | 低 | 否 | 是 |

| WebRTC | 极高 | 极高 | 中 | 极低 | 否 | 是 |

| Push API | 中 | 高 | 中 | 极低 | 是 | 否 |

使用指南

对于调度提醒系统,建议采用 SSE 作为主要方案,Push API 作为离线补充,长轮询作为降级方案 的组合策略。这样可以在保证实时性的同时,提供最佳的用户体验和系统可靠性。

不同的应用场景应该选择最适合的通信方案:

  • 简单通知推送:SSE
  • 实时协作应用:WebSocket
  • 兼容性要求高:轮询/长轮询
  • 离线通知需求:Push API
  • 低延迟要求:WebRTC
  • GraphQL 项目:GraphQL Subscriptions

选择方案时需要综合考虑项目需求、技术栈、团队能力和维护成本等因素。

实战经验

经验总结

信息参考

创建于 2025/1/1 更新于 2026/5/27