1

Win7 マシンにlemmingzshadow / php-websocketをインストールしましたが、これは非常に簡単でした。

  1. コンテンツを htdocs フォルダーに解凍しました。
  2. コマンドラインからserver.phpを実行しました。
  3. Websockets をサポートするブラウザーからファイル /client/status.html を要求しました。

これが、Google Chrome 19 / Windows 7 を実行しているローカル マシンで取得したものです。

Win7 拡大するにはクリックしてください

30秒間「接続済み」と表示され(サーバーからの情報は表示されません)、「切断済み」と表示されます。関連するコマンドライン出力は次のとおりです。

コマンド ライン レポート

Firefox 12 / WinXP を使用している別のコンピューターから LAN 経由でスクリプトにアクセスすると、まったく同じ問題が発生します。

winXP 拡大するにはクリックしてください

Firefox 7.0.1またはChromiumを使用して、VirtualBox Ubuntuからアクセスした場合にのみ機能するようです

Ubuntu 拡大するにはクリックしてください

なぜこれが起こっているのかを理解しようとしてから数日が経ち、他の Websocket スクリプトを試してみましたが、それらは Ubuntu からアクセスした場合にのみ機能します。この同じスクリプトをUbuntu / XAMPPにインストールしても、同じ問題に悩まされていました(スクリプトはUbuntuでは正常に実行されますが、他のオペレーティングシステムでは実行されません)。

私はこれに夢中になっています、なぜそれが起こっているのですか??

4

1 に答える 1

0

そのコード (lemmingzshadow) では、デフォルトの動作は、サーバーがクライアントに送信するデータをマスクすることです。

接続.php: public function send($payload, $type = 'text', $masked = true)

何らかの理由でこれは Chrome 18 では機能しますが、最新の websocket 仕様に反しており、Chrome 19 では機能しません。

RFC 6455 秒 5.1:

サーバーは、クライアントに送信するフレームをマスクしてはなりません。マスクされたフレームを検出した場合、クライアントは接続を閉じる必要があります。

于 2012-05-11T06:48:25.833 に答える