2010-06-27 42 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運行良好。