我使用node.js和socket.io。我对socket.io的连接速度有问题。在Internet Explorer和Opera中,我的连接速度有问题。 - 当我使用FlashSocket或Websocket时。当我使用运输播放XHR连接的模式时 - 在所有浏览器中(即FF,Chrome,Opera)中。

运输方式 - XHR -Polling和Flash / websocket有什么区别?最好的运输方式是什么?如何优化连接速度是socket.io?

感谢您的建议!

有帮助吗?

解决方案

如果网络浏览器之间的连接一般速度有所不同,我会感到惊讶,但是您会在Internet Explorer和Opera中看到初始连接延迟的原因是,本机weberabock不可用,因为它一直不可用默认情况下禁用。因此,如果您选择FlashSocket,则需要在建立连接之前下载一个附加的Flash对象(SWF文件)。

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

运输方式 - XHR -Polling和Flash / websocket有什么区别?

  • XHR -Polling-请参阅 http://en.wikipedia.org/wiki/push_technology#long_polling
  • FlashSocket连接 - 使用Flash套接字对象建立与WebSocket服务器的连接,并使用WebSocket协议进行通信。这意味着Flash和JavaScript之间存在相互作用,这也意味着需要下载一个附加的Flash对象(SWF文件)。

最好的运输方式是什么?

任何本地支持它的Web浏览器的WebSocket(Chrome,Firefox,Safari)。如果Flash对象(SWF文件)在浏览器缓存中,则连接应快速。如果不是,那将会延迟。 XHR长播是一个很好的解决方案,可以运行交叉浏览器,但有负面浏览器:

  • 在民意调查请求之间显示的数据可能已过时(陈旧)。
  • 与Websocket使用的单个TCP连接相比,这是一种效率较低的连接方法
  • HTTP有一个间接费用,这意味着根据请求和每个后续请求发送其他标头信息。

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

(我对socket.io非常新鲜,这只是一个建议)

我会看 配置socket.io文档 看看是否可以有条件地设置 transports 基于正在连接的浏览器。根据您的经验,这可能是:

  • Chrome,Firefox,Safari -Websockets
  • 即,歌剧 - XHR -Polling

其他提示

为了减少连接时间,您可以尝试使用“连接超时”参数来减少连接超时(默认为10秒)。

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

socket = io.connect('http://your-site.com',{'connect timeout': 1000});
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top