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

| 归档时间: |
|
| 查看次数: |
8807 次 |
| 最近记录: |