【发布时间】:2016-10-06 06:34:17
【问题描述】:
我刚刚阅读了RFC-6202,但无法弄清楚使用 SSE 而不是简单地请求分块流的好处。作为一个示例用例,假设您想要实现客户端和服务器,其中客户端想要使用纯 HTTP 技术“订阅”服务器上的事件。服务器保持初始 HTTP 请求打开,然后在新事件出现时偶尔发送新块的缺点是什么? 我发现了一些反对这种流媒体的论据,其中包括:
- 由于
Transer-Encoding是跳到跳而不是端到端的,中间的代理可能会在将响应转发给客户端之前尝试合并块。 - 客户端和服务器之间的 TCP 连接需要始终保持打开状态。
但是,据我了解,这两个论点也适用于 SSE。我可以想象的另一个潜在论点是 JavaScript 浏览器客户端可能没有机会实际获取相应的块,因为重新组合它们是在较低级别处理的,对客户端透明。但我不知道事实是否如此,因为视频流必须以某种类似的方式工作,或者不是?
编辑:同时我发现 SSE 基本上只是一个分块流,由更易于使用的 API 封装,对吗?
还有一件事。 This page 首先告诉 SSE 不支持流式二进制数据(出于哪个技术原因?)然后(在底部),他们说这是可能的,但效率低下。有人可以澄清一下吗?
【问题讨论】: