← [ BACK_TO_NOTES ]

前后端实时通信

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

#moc #growing #network

[!info] related notes

前后端实时通信

知识总览

filters:
  and:
    - 'file.ext == "md"'
    - 'file.inFolder("z")'
    - 'this.file.links.contains(file)'
    - 'file.path != this.file.path'
formulas:
  knowledge: 'file.asLink(title)'
properties:
  formula.knowledge:
    displayName: 知识
  note.description:
    displayName: Description
  note.mastery:
    displayName: Mastery
views:
  - type: table
    name: 知识总览
    order:
      - formula.knowledge
      - note.description
      - note.mastery
    columnSize:
      formula.knowledge: 280
      note.description: 760
      note.mastery: 56

基础概念

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

  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/9/15
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本