2010-12-12 6 views
3

Chromeがロングポーリングで読み込み中で、ローディングインジケータが停止しません。NodeJS&Socket.io:ChromeがWebSocketでローディングしていません

なぜChromeはWebSocketを使用しないのですか。ロングポーリングを使用しているときにローディングインジケータが回転しないようにするにはどうすればよいですか?

私は、最新のsocket.ioを使用し、V2.5

nodejsよ -

を私が初めて接続は、それがのWebSocketを使用しますが、すぐに切断され、XHRポーリングと再接続します。

+1

あなたのChromeバージョンを教えてください。答え: –

+0

Chrome 8 - http://cl.ly/3din –

+0

この質問を投稿していただきありがとうございます!!そしてもちろん+1 :) –

答えて

2

私は同様の問題があり、 "xhr-polling"への転送方法をオーバーライドするsocketioクッキーがあることがわかりました。私はどのようにクッキーがそこに着いたのか分からないが、それを削除することはやった。

ここに、クッキーを検索する行の参照があります。 https://github.com/LearnBoost/Socket.IO/blob/master/socket.io.js#L1023

+0

クッキーを見つけて削除しました。まだ動作していません:\ –

+0

クッキーを見つけて削除して、この問題を解決しました。ありがとう! –

+0

クッキーを削除すると、なぜ私の最新のクロム30でもうまくいかなかったのかという、待望の問題が解決しました。 +1 –

0

私はChrome 8を使用しています.WebSocketは正常に動作しているようです。

socket.ioを使用している場合、長いポーリング(または永遠にiframe)を行う前に、FlashSocketまたはxhr-multipartにさえ戻ります。サーバーとクライアントの両方でsocket.ioを初期化するときは、転送オプションを確認してください。

+0

私はwebfaction上で2つの異なるサブドメインを使用しています - 私が考えることができるのは、それがクロスドメインを考えるので、ポーリングに落ちているということだけです。おそらくWebFactionと関係があります。 –

+0

ポーリングしていない特定のトランスポートを強制的に実行するようにトランスポートを設定してください。 –

+0

クライアント側のオプションで設定しようとしましたが、それでもxhr-pollingと接続しています。それをサーバーに強制する方法はありますか? –

2

socket.io.jsには、これを制御するオプションがあるようです。

  • tryTransportsOnConnectTimeout - デフォルト値は
  • 真rememberTransportされる - デフォルト値は

本当である私は「tryTransportsOnConnectTimeoutが」「真」に設定されているならば、socket.ioは、すべてのトランスポートメカニズムを反復することを信じています接続し、成功した最初のものを使用します。

'rememberTransport'が 'true'に設定されていると、成功したトランスポートはクッキーに格納されます。

私のアプリケーションでは、切断されたときに再接続するロジックを実装しました。私は、上記の両方のオプションを「偽」に設定して、望ましくない転送に戻らないようにする必要があることを発見しました。問題が発生したのは、切断後、サーバーがいつでも利用可能になる可能性があるためです(クライアントがWebSocketではなく長時間のポーリングを試みている間)。これが発生した場合は、Cookieが設定され、後続の接続で不要なトランスポートが引き続き使用されます。

関連する問題