安装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,但我真的不太了解它所以我不能说。有什么想法吗?
答案 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)
我也面临着类似的问题。
您的案例 -
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。