已关闭8年。
BOSH是...
听起来像WebSockets和HTTP长轮询,不同之处在于它使用两个开放的HTTP连接而不是一个,并且不扩展HTTP协议(protocol)。
两种协议(protocol)之间有什么区别,哪种用例更喜欢WebSockets而不是BOSH?
最佳答案
首先让我解决WebSockets准备就绪:
默认情况下,Chrome,Safari和iOS(iPhone和iPad)中已交付并启用了Hixie-76协议(protocol)的WebSockets实现。还随附了Hixie-76协议(protocol),但默认情况下在Firefox 4和Opera 11中禁用了该协议(protocol)。web-socket-js项目是Flash填充程序/ polyfill,可向使用Flash的任何浏览器添加WebSocket(Hixie-76)支持。
换句话说,WebSockets几乎可用于几乎所有浏览器。
Opera和Mozilla选择默认禁用该协议(protocol)的原因是由于理论上的担忧,即使用协议(protocol)的Hixie版本可能会破坏/破坏某些HTTP代理/中介。同样的问题也适用于Flash,但是Mozilla和Opera对其发布的代码负有更高的责任。该协议(protocol)的HyBi版本(该协议(protocol)已移至IETF HyBi工作组)解决了安全问题。
Mozilla,Opera,Google和Microsoft都在研究HyBi协议(protocol)的实现(尽管Microsoft暂时将其保留为separate download)。有一个Hyt-07支持的branch of web-socket-js。
更新:自2013年2月起,Chrome 14,Firefox 7,IE10,Opera 12.1,Safari 6.0和HyBi/IETF RFC 6455 spec Flash填充程序/ polyfill支持最新的web-socket-js。在移动设备上,iOS 6.0上的Safari,Opera Mobile 12.1,Android的Chrome 14,Android的Firefox 7和Blackberry 7均支持IETF6455。原始的默认Android浏览器不支持WebSocket。
WebSocket服务器易于实现。有许多独立和插件实现,其中大多数都支持Hixie-76和HyBi协议(protocol)版本:
BOSH与WebSockets :
消息。在BOSH中,每个消息都有HTTP请求和响应 header (每个往返轻松地有180多个字节)。此外,每条消息都以XML封装(据说是可选的,但规范未定义方式),并带有多个与 session 相关的属性。
更新:
刚刚找到了一段视频,其中Ian Fette讨论了advantages of WebSockets over the Channel API which is similar to BOSH(44:00)