【问题标题】:Websocket replacement?Websocket 替换?
【发布时间】:2012-10-15 13:15:05
【问题描述】:

我正在处理一个页面,需要能够根据服务器的状态保持更新。

我喜欢 websockets,因为它们为我提供了一种从服务器推送消息的方式,但可用性是一个问题。

我需要通用的方式在网络服务器和浏览器客户端之间进行双向通信。

我希望能够在我的服务器上容纳大量客户端,因此忙于等待客户端不是一个好的解决方案。

我研究过长池化,但这类似于忙于等待客户端部分——如果我需要 IE 支持,这是唯一的方法吗?

这个问题只是关于交易的客户端。

【问题讨论】:

  • 你准备在服务器端使用什么?
  • @Tomalak:我打算使用mochiweb 服务器端。
  • 似乎是处理许多同时打开的请求的好选择。主观上我会说,如果您想要低级兼容性,那么长轮询在客户端并不是一个糟糕的选择。
  • @Tomalak:我认为你是对的。但我想要的是很多被动连接挂起......并且不断建立和断开连接可能有一天会成为问题。

标签: javascript web-applications web


【解决方案1】:

您需要双向通信吗?如果不是,您应该使用SSE(服务器发送事件)。它们也更容易在 IE 中模拟(因为 SSE 实际上在旧系统上优雅地降级为长轮询)。

【讨论】:

  • 这真的很有趣.. 但是 IE 问题让我厌烦.. 也许我可以找到一个制作 IE 等价物的人..
  • 没有等价物(尤其是当您需要支持 IE6 时),因为 IE6 不能很好地支持长时间运行(流式传输)响应。因此,在 IE 上,您将被诸如长轮询之类的事情困住(充其量)。 SSE 支持将 last-event-id 标头发送到服务器,以获取自上次看到(在客户端)事件以来的任何事件。所以 SSE 实际上只是进行了一些优化的长轮询(对于现代浏览器)?
【解决方案2】:

是的,你是对的,长轮询存在问题,它往往会消耗大量资源。

您需要的是我可以看到的解决方案,该解决方案可以回退到 HTTP longopolling,而不是使用 Websockets API 的浏览器。 SSE 是一种替代方案,但 Websockets 感觉更方便

如果您在 .NET 平台上运行 XSockets.NET 可以作为替代方案,它支持 Websockets(RFC6544 和 Hybi00)并在需要时回退 HTTP Longpolling(即 IE)

看看http://xsockets.net

【讨论】:

  • 我没有使用 .NET 平台——听起来很像 SSE
【解决方案3】:

您查看过http://signalr.net/ 吗?基于 websockets,但会优雅地降级到最近的可用组件以支持套接字类型连接。

文档可以在这里找到:https://github.com/SignalR/SignalR/wiki

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-05-25
  • 1970-01-01
  • 2018-07-17
  • 2011-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多