【发布时间】:2021-05-14 11:29:09
【问题描述】:
Some StackOverflow 帖子和 this 信息丰富的博客帖子(但可能已过时)表明当前在浏览器中实现的 HTTP/2 尚不支持推送流,并且在此功能时仍应使用 WebSockets 或 SSE需要。
我很好奇通过 HTTP 实现 gRPC 的 Google Firestore 是如何实现这一点的。据我在打开一个使用 Firestore 的网站后所知道的,以下内容均未使用:
- WebSockets - DevTools 不显示任何打开的 Websockets。还有this。
- SSE - 我在 DevTools 源或 relevant source code 的任何地方都找不到“事件源”
- WebRTC - 不适用。我在chrome://webrtc-internals 中也找不到任何东西
- HTTP/2Server 推送(又名 Push_Promise)- 无关
问题
- FireStore 是否只是简单地使用类似于长轮询的东西,其中客户端与服务器打开 HTTP/2 流(或使用 Chrome 时为 HTTP/3),并且该服务器只是保持该流打开以在需要时推送消息.
- 这是通过 HTTP/2 浏览器实现的一些最新进展实现的,还是让服务器/客户端软件库开发人员简单地想出了一种使用这种长轮询方法模拟服务器-> 客户端推送流的方法。
- 如果上述情况属实,我们现在(在 2021 年)是否可以说 HTTP/2 可以单独实现 WebSocket 和/或 SSE 提供的相同功能,并且 WebSocket 即将过时。
【问题讨论】:
标签: firebase-realtime-database google-cloud-firestore websocket grpc http2