ServiceStack:通过 WebSocket 选择服务器发送的事件
Posted
技术标签:
【中文标题】ServiceStack:通过 WebSocket 选择服务器发送的事件【英文标题】:ServiceStack: Choice of Server-Sent Events over WebSockets 【发布时间】:2014-08-21 15:12:51 【问题描述】:正在查看提到新 SSE 功能的最新发行说明。这个功能绝对很棒,而且似乎是与浏览器反向的长轮询。
我对这一切都很陌生,但 WebSockets 似乎是最佳方式,因为它是双向的,而 SSE 只是浏览器的单向方式。另外 IE 不支持 SSE,但在最近的两个或三个版本中支持 WebSockets。
我只是想知道选择 SSE 而不是 WebSockets 的原因。
【问题讨论】:
与您的上一个问题一样,这是题外话,因为您直接向 ServiceStack 团队询问有关他们在 websockets 上使用 SSE 的设计决策的问题; 只有他们可以权威地发言。如前所述,SO 不是直接访问 ServiceStack 的替代联系人。虽然 Mythz 提供了一个很好的答案 (+1),但这个问题应该通过电子邮件或 through their support community 直接向 ServiceStack 提出。 知道了。无论如何,谢谢神话。 【参考方案1】:支持Server Sent Events的原因是outlined in the Chat demo project:
Server Sent Events (SSE) 是一个优雅的web technology,用于有效地接收来自任何 HTTP 服务器的推送通知。它可以被认为是长轮询和单向 WebSockets 的混合体,并且都包含许多优点:
简单 - 服务器发送事件只是一个长期存在的 HTTP 请求,任何 HTTP 服务器都可以支持 高效 - 每个客户端使用单个 TCP 连接,并且每条消息都避免了 HTTP 连接和标头 often faster than Web Sockets 的开销。 弹性 - 浏览器会自动检测连接中断并自动重新连接 可互操作 - 由于它只是普通的 HTTP,因此可以使用您最喜欢的 HTTP 工具进行自省,甚至可以通过 HTTP 代理工作(缓冲和检查编码已关闭)。 得到很好的支持 - 作为一种网络标准,所有主流浏览器都支持它,除了 IE can be enabled with polyfills。即这是一个非常简单优雅的Web Standard,具有比 WebSockets 更好的 HTTP 保真度,非常适合在 ServiceStack 的 ASP.NET 和 SelfHosts 中工作的服务器推送通信,无需任何额外的 .NET 依赖项或要求主机 Windows Server 具有 WebSockets支持启用使用。 IE支持can be enabled with polyfills.
WebSockets 可能会在以后得到支持,但这可能需要额外的外部依赖项和Windows Server that supports WebSockets 的要求。
【讨论】:
以上是关于ServiceStack:通过 WebSocket 选择服务器发送的事件的主要内容,如果未能解决你的问题,请参考以下文章