2010-06-27 55 views
1

我使用监听端口8000 localhost的节点创建了一个服务器。验证它运行正常,但我无法访问客户端上的WebSocket(Chrome 5)。尝试了几种来自各种Git回购,节点+ websocket,socketIO,文章等的实现。Node.js,WebSocket位置问题?

没有端口冲突(sudo lsof -i tcp); 尝试server.listen(8000,“*”); 指向ws = new WebSocket(“ws://:8000/test”); Debian Lenny,Apache22 节点v0.1.98-31-g1c6671a

我在考虑可能与url重写有冲突。或者可能的权限。有任何想法吗?

回答

0

我在Ubuntu 10.04 LTS 32位和Chrome 5.0.375.125上遇到类似问题,发现它是Chrome中的一个错误。 下面介绍如何测试和解决问题。我使用PHP和以后的WebSocket Node.JS:

PHP:从http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/下载教程文件,并将其解压缩到您的webroot中名为'套接字'的文件夹中。这个文件夹现在包含一个readme.txt和文件夹'server'和'client'。现在根据readme在控制台中启动脚本(对于我来说命令是:sudo php -q /var/www/socket/server/startDaemon.php)。它应该打印'开始监听套接字'。 。保持控制台窗口打开。现在在Chrome中转到localhost/socket/client/client.php。它应该说'套接字状态0',如果你在控制台中看,你看不到任何新消息(没有连接)。

现在来诀窍:打开第二个Chrome选项卡。将此选项卡指向相同的url:localhost/socket/client/client.php(它也表示'套接字状态0')。然后再关闭它。现在您的原始标签应该说'套接字状态:1(打开)',并且在控制台中您看到握手已经完成。 WebSocket现在可以工作。

我重复了上面的同样的技巧,但这次使用Node.JS和Socket.IO脚本。包含在Socket.IO-node(github.com/LearnBoost/Socket.IO-node)中的聊天示例具有相同的问题,挂在'正在连接...'阶段。在聊天框中打开第二个选项卡,然后再次关闭它解决了问题,并且聊天框继续正常加载。 Node.JS服务器确认控制台中的连接。从那时起,WebSocket运行良好。