0

Firefox 10は私の握手を受け入れません(私は本当に知りませんか?)。これはMozillaであるため、WebSocketの代わりにMozWebSocketを使用します。私のサーバー応答ヘッダーは次のとおりです。

                $reply = "HTTP/1.1 101 Switching Protocols\r\n" .
                        "Upgrade: websocket\r\n" .
                        "Connection: Upgrade\r\n" .
                        "Sec-WebSocket-Accept: {$accept}\r\n\r\n";

Chrome 16で完璧に動作しますが、Firefoxでは、サーバーがハンドシェイクよりも実行すると言っても、何かを待っているだけです。その後、しばらくすると、offcorseクライアントはステータス3(DISCONNECT)になります。

何か案は?

4

2 に答える 2

3

オープニングヘッダーを正しく完全に読んでいることを確認しましたか?ChromeとFireFoxの現在のWebSocketハンドシェイク処理の主な違いは、FireFoxがWebSocketハンドシェイク要求をキャッシング、エンコードの受け入れ、ユーザーエージェントなどでより完全に満たすことです。特に、RFCによると「接続」ヘッダーを再確認してください。複数の値があり、FireFoxでは機能しますが、chromeでは機能しません。FireFox接続ヘッダーは通常次のようになります:「接続:キープアライブ、アップグレード」。これにより、ヘッダーに複数の値があることを期待していないハンドシェイクパーサーが作動する可能性があります。

それ以外の場合、$ accept値が正しく計算されていると仮定すると、ハンドシェイクの応答は正しいように見えます。これは、Chromeがそれを受け入れている場合のように聞こえます。

于 2012-02-04T16:38:03.987 に答える
0

私はそれが私のFirefox(?)の失敗だと気づきました。FFをアンインストールし、プライベートデータ全体(真剣にすべて!)を削除し、FFをもう一度インストールしました...そして同じ問題です!ですから、それが私のWindowsの問題なのか、それともsthなのかわかりません...気にしないでください...すべてに感謝します。

于 2012-08-01T09:25:31.703 に答える