为什么Safari和Chrome上的Socket.io连接速度很慢

spr*_*ain 5 node.js socket.io

我是Node.js和Socket.io的真正新手 - 所以如果这是一个愚蠢的问题,请耐心等待.

我在Heroku上设置了一个非常基本的假人来测试Socket.io.您所能做的就是单击一个按钮,所有连接的浏览器都会相应地看到一条消息.当服务器在本地运行时,这非常有效.现在它在Heroku上我看到Safari和Chrome上的连接问题.初始连接延迟大约10秒,第一次调用时出现错误503 io.connect('http://myapp.heroku.com/').

在Firefox和Internet Explorer中,几乎可以立即实现连接.

你可以在这里看到应用程序: http://sprain.ch/socketio/

关于什么可能导致这个问题以及如何解决它的任何想法?

les*_*usz 8

您可以使用"connect timeout"参数(默认为10秒)减少用于第一个websocket连接的超时.

您可以尝试使用以下命令将超时减少到1秒:

io.connect('http://myapp.heroku.com/',{'connect timeout': 1000});
Run Code Online (Sandbox Code Playgroud)


Aas*_*sai 3

一些东西:

  • 我建议您使用这些设置:http://devcenter.heroku.com/articles/using-socket-io-with-node-js-on-heroku

  • 尝试简单地使用“io.connect()”,而不是尝试手动指定 URL。SocketIO 有一些非常可靠的内置发现机制,用于与本地主机通信,无论该主机是什么。

  • Heroku + Socket.IO 本身并没有什么慢的地方(从经验来看),所以它让我相信你的代码中还发生了其他事情。如果您能多分享一点,诊断可能会更容易。

另外,FWIW 您链接的页面只是有一些文字,上面写着“klick me!” 并且没有按钮。