1

Chromeとローカルホストアプリの間の通信に何ヶ月も問題なくWebSocketを使用しています。突然、最新バージョンのChromeでは、データがきれいに処理されなくなりました。

Chrome拡張機能のJavaScriptでは、コードの関連部分は次のとおりです。

window.ws = new WebSocket("ws://localhost:13000/");

window.ws.onopen = function () {
    window.ws.send('GO');

私のC#アプリでは:

string msg = ASCIIEncoding.UTF8.GetString(buffer);
Debug.WriteLine(msg);

何ヶ月もの間、これはうまくいきました、そして、私は毎日「GO」を元に戻しました。今、私が受信バッファで取得しているのは4バイト{114,247,7,0)であり、これは私が見つけることができるどのエンコーディングでも「GO」に変換されません。誰かが何が起こっているのか考えていますか?コードのどちらの端(クロームまたはリスナー)にも触れていないので、私は困惑しています。

乾杯!

PS:完全なChromeバージョン19.0.1084.15 beta-m

4

2 に答える 2

2

理解した。ChromeはデフォルトでWebSocketの圧縮を有効にしていることがわかりました。その拡張機能を拒否するために、自分の側でWebSocketサーバーを変更する必要があり、Chromeはプレーンテキストに戻ります。

于 2012-04-13T08:27:24.783 に答える
0

マスキングに関するいくつかのデータを読んでください。ブラウザはマスキングを有効にしてメッセージを送信する場合があり、メッセージにマスキングを適用するフレームに 4 バイトを追加します。ブラウザでは有効または無効になっている可能性があるため、サーバー側では両方をサポートし、フレームにマスキング有効ビットが含まれている場合はマスキングを使用する必要があります。

RFC 6455に基づくマスキングの適用方法を確認する

于 2012-04-13T09:37:43.693 に答える