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

时间:2012-12-20 05:16:55

标签: node.js websocket socket.io

安装node.js后,我按照tutorial启动了一个简单的聊天服务器。它很容易设置并且正在工作,但我注意到两个问题:

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,但我真的很想让Websocket功能正常工作。

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

3 个答案:

答案 0 :(得分:2)

我在使用较旧版本的socket.io以及后来的chrome版本(以及其他浏览器)时看到了这种行为。它将超时然后回退到xhr轮询。要检查您正在使用的socket.io库的版本,请在shell(linux / unix)上输入:

npm ls| grep socket.io

它应该告诉你版本。目前的最新版本是0.9.13,有效。

如果您从http://psitsmike.com运行教程,请注意package.json文件对旧版本的socket.io进行硬编码,该版本不适用于最新的浏览器。

希望这有帮助。

答案 1 :(得分:0)

我也面临着类似的问题。

您的案例 -

  • 尝试删除您的Cookie,有时成功连接后的xhr-polling选项会保存到Cookie中,并且每次都会重复使用。 Similar question answered here
  • 如果在html或jade模板文件中错误地引用了socket.io文件,有时会出现debug - served static /socket.io.js。尝试更正脚本src链接,以防它出错。它应该是 - var socket = io.connect('http://localhost:3000');或者您也可以尝试删除这些链接 - var socket = io.connect();

希望它有所帮助。

答案 2 :(得分:0)

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

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

您需要确保为此正确配置了nginx。

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