1

ポート8000​​、localhostでリッスンするノードを使用してサーバーを作成しました。正常に動作していることを確認しましたが、クライアント (Chrome 5) で WebSocket にアクセスできません。さまざまな Git リポジトリ、ノード + websocket、socketIO、記事などからいくつかの実装を試しましたが、何もありません。

ポートの競合はありません (sudo lsof -i tcp)。server.listen(8000, "*"); を試しました。ws = new WebSocket("ws://:8000/test"); を指す Debian レニー、Apache22 ノード v0.1.98-31-g1c6671a

URLの書き換えと競合する可能性があると思います。または可能な権限。何か案は?

4

1 に答える 1

0

Ubuntu 10.04 LTS 32 ビットと Chrome 5.0.375.125 で同様の問題が発生し、Chrome のバグであることがわかりました。問題をテストして回避する方法は次のとおりです。PHP とそれ以降の Node.JS で WebSocket を使用しました。

PHP: http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/からチュートリアル ファイルをダウンロードし、Web ルートの「socket」というフォルダーに展開します。このフォルダには、readme.txt とフォルダ「server」および「client」が含まれています。ここで、readme に従ってコンソールでスクリプトを開始します (私の場合、コマンドは sudo php -q /var/www/socket/server/startDaemon.php でした)。「Start listen on Socket」と出力されます。. コンソール ウィンドウを開いたままにします。Chrome で localhost/socket/client/client.php に移動します。「Socket Status 0」と表示され、コンソールを見ると、新しいメッセージは表示されません (接続が確立されていません)。

2 つ目の Chrome タブを開きます。このタブで同じ URL を指定します: localhost/socket/client/client.php (「Socket Status 0」とも表示されます)。そして、もう一度閉じます。元のタブには「Socket Status: 1 (open)」と表示され、コンソールにハンドシェイクが行われたことが表示されます。WebSocket が機能するようになりました。

上記と同じトリックを繰り返しましたが、今回は Socket.IO スクリプトで Node.JS を使用しました。Socket.IO-node ( github.com/LearnBoost/Socket.IO-node ) に含まれるチャットの例には、「接続中...」の段階でハングするという同じ問題がありました。チャット ボックスの 2 番目のタブを開き、もう一度閉じると、問題が解決し、チャット ボックスが正しく読み込まれました。Node.JS サーバーは、コンソールで接続を確認しました。それ以降、WebSocket は正常に機能しました。

于 2010-08-09T20:27:15.640 に答える