【发布时间】:2011-11-11 17:34:48
【问题描述】:
我想编写一个实时聊天应用程序,需要决定使用哪些技术。
这些技术之间有什么区别,您更喜欢哪一种,为什么?
WebSockets 不是一个选项,因为它还没有准备好在野外战斗
谢谢
【问题讨论】:
我想编写一个实时聊天应用程序,需要决定使用哪些技术。
这些技术之间有什么区别,您更喜欢哪一种,为什么?
WebSockets 不是一个选项,因为它还没有准备好在野外战斗
谢谢
【问题讨论】:
您应该阅读问题"Why isn't BOSH more popular especially as an alternative to WebSockets and Long-Polling"。 kanaka 给出了一个绝妙的答案,我相信它会解决您对 WebSockets 的担忧。 WebSocket 绝对“准备在野外战斗”。
在我看来,BOSH 和 Comet 是一回事。 BOSH 代表“同步 HTTP 上的双向流”,尽管 BOSH specification 声明:
BOSH 是本规范中定义的技术,本质上提供了一种替代长期双向 TCP 连接的“插入式”替代方案。它是一项成熟的、功能齐全的技术,自 2004 年以来已被广泛实施和部署。据我们所知,它是许多类似技术中的第一个,现在包括在 Bayeux 协议中形式化的 Comet 方法以及 Web Socket 协议和反向 HTTP。
我知道 Comet 服务器至少从 2001 年就已经存在了,因为我曾在一家拥有并且仍然拥有 Comet 服务器的公司 (Caplin Systems) 工作。
我之所以说它们是同一个东西,从根本上讲,是因为它们最初(见下文)都依赖于两个 HTTP 连接。第一个是反向通道,它要么是长期持有的 HTTP 流连接,要么用于 HTTP 长轮询。第二个连接是短暂的,用于发送订阅请求等命令。这两个连接允许模拟双向通信。
因此,从根本上说,BOSH 和 Comet 使用相同的机制进行服务器到客户端和客户端到服务器的通信(客户端是 Web 浏览器或其他受支持的 Web 客户端)。 BOSH 的不同之处在于它在其协议中提供了更多的细节,并且在开发时考虑了 XMPP。任何 Comet 服务器都可以按照 BOSH 规范中定义的标准进行开发。
综上所述,Comet 和 BOSH 服务器无疑将提供替代传输机制。这些将包括 HTTP 流、HTTP 长轮询、标准 HTTP 轮询 和 WebSockets。
因此,如果您想要 BOSH 和 XMPP 提供的详细信息,那么您可能需要考虑使用 BOSH 和 XMPP 构建的技术堆栈。如果您想发送简单的消息,而不需要 BOSH 和 XMPP 中固有的附加负载,或者如果您想为自己的协议构建自己的“附加值”,那么标记为 Comet 服务器的东西可能是更好的解决方案。
如果您选择使用现有技术堆栈,而不是从头开始开发解决方案,那么该解决方案很可能会使用 WebSocket,因为它们提供了一种标准化且高效的双向通信机制。
我第一次尝试实时网络技术堆栈图,您可以在下面看到。希望对您有所帮助:
【讨论】: