4

安装 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 接触任何东西,而且我使用的是我知道支持 websockets 的最新 chrome 版本(23)(我能够使用 PHP-Websockets 成功连接到它们)。它继续使用 XHR,但我真的对让 Websocket 功能正常工作很感兴趣。

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

4

3 回答 3

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,它不适用于最新的浏览器。

希望这可以帮助。

于 2012-12-29T11:44:46.213 回答
0

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

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

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

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

于 2014-05-27T10:57:59.343 回答
0

我也面临类似的问题。

你的情况——

  • 尝试删除您的 cookie,有时成功连接后的 xhr-polling 选项会保存到 cookie 并在下次重复使用。类似的问题在这里回答
  • 有时也会出现在debug - served static /socket.io.jshtml 或 jam 模板文件中错误地引用 socket.io 文件时。尝试更正脚本 src 链接以防出错。它应该类似于 -var socket = io.connect('http://localhost:3000');或者您也可以尝试像这样一起删除链接 -var socket = io.connect();

希望能帮助到你。

于 2013-10-30T11:03:09.923 回答