1

我使用 Node 监听端口 8000,localhost 创建了一个服务器。验证它运行正常,但我无法访问客户端(Chrome 5)上的 WebSocket。尝试了各种 Git repos、node + websocket、socketIO、文章等的几种实现。没有。

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

我在想可能与 url rewrite 有冲突。或可能的权限。有任何想法吗?

4

1 回答 1

0

我在 Ubuntu 10.04 LTS 32 位和 Chrome 5.0.375.125 上遇到了类似的问题,发现这是 Chrome 中的一个错误。以下是测试和解决问题的方法。我将 WebSocket 与 PHP 和后来的 Node.JS 一起使用:

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

现在诀窍来了:打开第二个 Chrome 选项卡。将此选项卡指向相同的 url:localhost/socket/client/client.php(它还显示“套接字状态 0”)。然后再次关闭它。您的原始选项卡现在应该显示“套接字状态:1(打开)”,并且在控制台中您会看到握手。WebSocket 现在可以工作了。

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

于 2010-08-09T20:27:15.640 回答