解决方法
WebKit已经支持WebSockets很长一段时间了(基本上任何使用Safari或Chrome的人都有).从iOS 4.2开始,WebSockets已经打开(Apple在以前的版本中已经取消激活). Opera 11.0将拥有它(10.7现在是11.0). Firefox 4.0包含但默认情况下已禁用(在about:config中启用). Firefox 5.0或6.0可能默认启用它.
对于其他浏览器,您可以使用web-socket-js这是基于Flash的回退.它运行良好,并且很容易做自动回退.它比本机WebSockets慢,但仍然具有远低于AJAX / COMET的延迟.
如果Javascript是后端的有效选项,那么您可以考虑将Node和Socket.IO库用于Node. Socket.IO主要是一个服务器端库,它支持WebSockets(它包含了web-socket-js falback)和各种AJAX / COMET / long-poll方法. Socket.IO的客户端允许您使用与服务器端相同的API(它与普通的WebSockets API非常相似),它可以检测并选择最佳传输.仅当浏览器没有本机WebSockets并且您选择不使用回退时,才使用AJAX / COMET / long-poll传输.
noVNC(HTML5 VNC客户端)包含websockify,它是Web套接字到TCP套接字代理.有三种实现:C,python和Node.它可能是一个有用的参考. noVNC通过WebSockets传输大量数据,并且对延迟非常敏感. Flash回退肯定效率较低,但它仍然具有非常实用的性能. (免责声明:我做了noVNC)
总结:目前唯一不支持WebSockets的地方是没有本机WebSockets且没有Flash的浏览器(即当前iOS和较旧的Android手机).
一些misc笔记:
>我发现http://caniuse.com是HTML5(及相关)浏览器支持信息的最佳资源.
> HTML5 Cross-browser Polyfills是一个非常有用(长)的填充程序,后备和填充列表,它们将HTML5功能添加到不支持它们的浏览器中.