socket.io websocket连接无效(最新的chrome)

在安装node.js之后,我按照这个教程启动了一个简单的聊天服务器。 这是很容易安装和工作,但我已经注意到两个问题:

1.)我从socket.io得到这个警告

info - socket.io started debug - served static /socket.io.js debug - client authorized info - handshake authorized 1385647068766475337 debug - setting request GET /socket.io/1/websocket/1385647068766475337 debug - set heartbeat interval for client 1385647068766475337 warn - websocket connection invalid 

这对我来说没有意义,因为我没有碰到任何socket.io,我正在使用最新的chrome版本(23),我知道它支持websockets(我可以用PHP-Websockets成功连接到它们)。 它继续使用XHR,但我真的很感兴趣的WebSocketfunction的工作。

2.)当我到本地主机:8080连接到聊天服务器,它需要大约7-8秒,它提示我的名字,并实际上连接到服务器。 我有一种感觉,这可能是因为它正在恢复到XHR,但我真的不太了解,所以我不能说。 有什么想法吗?

在使用旧版本的socket.io和后来的chrome版本(以及其他浏览器)时,我看到了这种情况。 它会超时然后退回到xhr轮询。 要检查您使用的socket.io库的版本,请在shell(linux / unix)中input:

 npm ls| grep socket.io 

它应该告诉你的版本。 最新在这个时候是0.9.13,这是有效的。

如果您正在运行http://psitsmike.com上的教程,请注意package.json文件对旧版本的socket.io进行了硬编码,而该版本不支持最新的浏览器。

希望这可以帮助。

我也面临类似的问题。

你的情况 –

  • 尝试删除您的cookies,有时连接成功的xhr-polling选项会保存到cookie中,并在下次重新使用。 类似的问题在这里回答
  • 另外debug - served static /socket.io.js有时会在socket.io文件在html或者jade模板文件中被错误地引用。 如果错误,尝试更正脚本src链接。 它应该像 – var socket = io.connect('http://localhost:3000'); 或者你也可以尝试删除链接,像这样 – var socket = io.connect();

希望能帮助到你。

我有完全相同的问题。 这可能是旧的。 但我的设置是digitalocean。 会发生什么情况是,通常在一台服务器上运行节点应用程序的人使用nginx作为端口侦听,并在其自己的专用端口下使用节点。 nginx没有将websocket端口转发到节点,只有nodejs的端口80没有被初始化。

http://nginx.org/en/docs/http/websocket.html

你需要确保你的nginxconfiguration正确。

我只是将端口添加到io.connect直接连接到节点服务器,并避免nginx。