4

node.js をインストールした後、このチュートリアルに従って簡単なチャット サーバーを起動しました。セットアップは非常に簡単で、機能していますが、次の 2 つの問題に気付きました。

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で何も触れておらず、ウェブソケットをサポートしていることがわかっている最新のクロムバージョン(23)を使用しているため、これは私には意味がありません(PHP-Websocketsでそれらに正常に接続できます)。代わりに XHR を引き続き使用しますが、Websocket 機能を機能させることに非常に興味があります。

2.) チャット サーバーに接続するために localhost:8080 に移動すると、名前の入力を求められて実際にサーバーに接続されるまでに約 7 ~ 8 秒かかります。これは XHR に戻っているためかもしれないと感じていますが、私はそれについてよく知らないので、何とも言えません。何かご意見は?

4

3 に答える 3

2

古いバージョンの socket.io を新しい chrome ビルド (および他のブラウザーも) で使用すると、この動作が見られました。タイムアウトしてから、xhr ポーリングにフォールバックします。使用している socket.io ライブラリのバージョンを確認するには、シェル (linux/unix) で次のように入力します。

npm ls| grep socket.io

そして、それはあなたにバージョンを教えてくれるはずです。現時点での最新は 0.9.13 で、動作します。

http://psitsmike.comからチュートリアルを実行している場合は、package.json ファイルが古いバージョンの socket.io をハードコードしていることに注意してください。これは最新のブラウザーでは機能しません。

お役に立てれば。

于 2012-12-29T11:44:46.213 に答える
0

まったく同じ問題がありました。これは古いかもしれません。しかし、私のセットアップはdigitaloceanにあります。何が起こるかというと、通常、1 つのサーバーでノード アプリを実行する人は、ポート リッスンに nginx を使用し、独自の専用ポートでノードを使用します。nginx は websocket ポートをノードに転送せず、nodejs が初期化されていないポート 80 のみを転送しました。

http://nginx.org/en/docs/http/websocket.html

これには、nginx が適切に設定されていることを確認する必要があります。

ノードサーバーに直接接続し、nginxを回避するio.connectにポートを追加しました。

于 2014-05-27T10:57:59.343 に答える
0

私も同様の問題に直面していました。

あなたの場合 -

  • Cookie を削除してみてください。接続に成功すると、xhr-polling オプションが Cookie に保存され、次回は再利用されることがあります。同様の質問への回答はこちら
  • またdebug - served static /socket.io.js、socket.io ファイルが html または jade テンプレート ファイル内で正しく参照されていない場合にも発生することがあります。間違っている場合は、スクリプトの src リンクを修正してみてください。それは次のようなものでなければなりません-var socket = io.connect('http://localhost:3000');または、このようにリンクをまとめて削除することもできます-var socket = io.connect();

それが役に立てば幸い。

于 2013-10-30T11:03:09.923 に答える