socket.io - XHR轮询vs flashsocket和websocket

socket.io - XHR轮询vs flashsocket和websocket

问题描述:

我使用node.js和socket.io。 我与socket.io的连接速度有问题。 在Internet Explorer和Opera中,我的连接速度有问题。 - 当我使用flashsocket或websocket。 当我在所有浏览器(IE,FF,Chrome,Opera)中使用传输轮询XHR连接模式时速度很快。socket.io - XHR轮询vs flashsocket和websocket

运输方式-XHR-polling和flash/websocket有什么区别? 什么是最佳交通方式?如何优化连接速度是socket.io?

感谢您的建议!

如果Web浏览器之间的连接速度一般不同,但我会惊讶的发现,但在Internet Explorer和Opera中初始连接延迟的原因是本机WebSocket支持不是因为默认情况下它已被禁用。因此,如果您选择FlashSocket,则在连接建立之前需要下载一个额外的Flash对象(SWF文件)。

WebSockets正在IE10和Opera中引入,它们可用,但默认情况下是禁用的。

运输方式-XHR-polling和flash/websocket有什么区别?

  • XHR轮询 - 见http://en.wikipedia.org/wiki/Push_technology#Long_polling
  • FlashSocket连接 - 使用一个动画Socket对象建立到网页套接字服务器的连接,并使用WebSocket协议进行通信。这意味着Flash和JavaScript之间存在交互,也意味着需要下载一个额外的Flash对象(SWF文件)。

什么是最佳运输方式?

本机支持它的任何Web浏览器(Chrome,Firefox,Safari)的WebSockets。如果Flash对象(SWF文件)位于浏览器缓存中,则连接应该很快。如果不是,那么会有延迟。 XHR长轮询是一个很好的解决方案,将工作跨浏览器,但也有劣势:

  • 调查请求之间展出的数据可能是过时(过时)的。
  • 它比由于HTTP长轮询通过的WebSockets使用单个TCP连接的效率较低的连接方法使用多个连接来模拟双向功能
  • HTTP已这意味着附加报头信息的开销在请求和每个随后的发送请求。

如何优化连接速度是socket.io?

(我是很新,socket.io到这只是一个建议)

我看configuring Socket.io docs,看看你是否可以根据所连接的浏览器上有条件地设置transports 。根据您的经验,这可能是:

  • 的Chrome,火狐,Safari浏览器 - 的WebSockets
  • IE,歌剧 - XHR-轮询
+0

我可以设置在IE中flashsocket?它是否与IE浏览器兼容? – Jenan 2012-01-11 06:24:17

+1

@Jenan是的,只要安装了Flash,FlashSocket应该在IE中工作。 – leggetter 2012-01-11 10:04:23

为了减少连接的时间,你可以尽量减少使用“连接超时”参数连接超时(默认为10秒)。

例如,要连接超时减少到1秒:

socket = io.connect('http://your-site.com',{'connect timeout': 1000});