【发布时间】:2011-05-11 02:21:11
【问题描述】:
Websocket 专为浏览器中的快速双向通信而设计。假设您可以控制服务器和本机客户端(例如 iOS 或 Mac 应用程序),是否有充分的理由或情况通过 websocket 而不是使用 HTTP 库进行通信?
【问题讨论】:
Websocket 专为浏览器中的快速双向通信而设计。假设您可以控制服务器和本机客户端(例如 iOS 或 Mac 应用程序),是否有充分的理由或情况通过 websocket 而不是使用 HTTP 库进行通信?
【问题讨论】:
我将回答几个不同的问题,希望最终能回答您的问题:
是否有理由从客户端使用 WebSockets 而不是 HTTP? 是的。
与 HTTP 相比,WebSockets 是双向、全双工、低延迟和低开销的。
与 HTTP/AJAX/COMET 相比,延迟和开销较低的部分原因在于您不必为每个请求重新建立连接。
是否有理由从客户端使用 WebSockets 而不是原始套接字? 是的。
最初的 WebSockets 握手是 HTTP 服务器友好的(并且具有一些源和哈希交换安全机制)。它允许 Web 服务器轻松更新以支持重定向或代理 WebSockets 连接到真正的 WebSockets 服务器应用程序。
WebSockets 的另一个好处是它是一个框架协议,它允许应用程序专注于有用的功能,而无需处理自己的框架和缓冲。
通过 websockify 之类的方式将 WebSockets 支持添加到现有 TCP 套接字服务器或代理相当容易。免责声明:我制作了 websockify。
从服务器的角度来看,WebSockets 是一个胜利,因为它们可以通过独立客户端或浏览器访问。这意味着将会有越来越多的当前基于 TCP 套接字的服务将通过 WebSockets 公开。因此,现在向客户端添加 WebSockets 支持将在未来得到回报。
【讨论】: