XMPP BOSH与COMET

我想编写一个实时聊天应用程序,并需要决定使用哪些技术.

这些技术之间有什么区别,您更喜欢哪种?为什么?

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, the technology defined in this specification, essentially provides a “drop-in” alternative to a long-lived, bidirectional TCP connection. It is a mature, full-featured technology that has been widely implemented and deployed since 2004. To our knowledge it was the first of many similar technologies, which now include the Comet methodology formalized in the Bayeux Protocol as well as The Web Socket Protocol and Reverse HTTP.

我知道彗星服务器至少从2001年开始就存在这个事实,因为我曾经在一家公司(Caplin Systems)工作过,现在有一台Comet服务器.

我之所以说它们在基本层面是相同的,是因为它们最初(见下文)都依赖于两个HTTP连接.第一个是反向通道,它是长期持有的HTTP Streaming连接或用于HTTP Long-Polling.第二个连接是短暂的,用于发送订阅请求等命令.这两个连接允许模拟双向通信.

因此,在基本层面上,BOSH和Comet使用相同的服务器到客户端和客户端到服务器通信的机制(客户端是Web浏览器或其他支持的Web客户端). BOSH的不同之处在于它在协议中提供了更多细节,并在开发时考虑了XMPP.可以开发任何Comet服务器以符合BOSH规范中定义的标准.

所有这些说,Comet和BOSH服务器无疑将提供替代传输机制.这些将包括HTTP Streaming,HTTP长轮询,标准HTTP轮询和WebSockets.

因此,如果您想要BOSH和XMPP提供的详细信息,那么您可能需要考虑使用BOSH和XMPP构建的技术堆栈.如果你想发送简单的消息,没有BOSH和XMPP固有的额外负载,或者如果你想为自己的协议构建自己的“附加值”,那么标记为Comet服务器的东西可能是更好的解决方案.

如果您选择使用现有的技术堆栈,而不是从头开始开发解决方案,那么解决方案很可能会使用WebSockets,因为它们提供了标准化且高效的双向通信机制.

我已经第一次尝试了实时Web技术堆栈图,您可以在下面看到.希望它有点帮助:

你可以找到list of realtime technologies here.

相关文章
相关标签/搜索