3

サーバーが画像をキャプチャし、いくつかの画像処理操作を実行するビューアーアプリケーションを開発しています。これはクライアント側の HTML5 キャンバスに表示する必要があります。私が作成したサーバーは VC++ であり、http://www.codeproject.com/Articles/371188/A-Cplusplus-Websocket-server-for-realtime-interactを使用しています。

これまでのところ、必要な機能を実装しました。あとは最適化だけです。リファレンスは文字列を送信するためのチャット アプリケーションだったので、データを 7 ビット形式にエンコードしていました。これがオーバーヘッドを引き起こしています。バイナリデータ転送機能が必要です。そこで、エンコーディングとフレーミングを変更しました (現在、オペコードは 129 ではなくバイナリ メッセージ用の 130 です)。サーバー部分は問題ないと言えます。送信フレームを確認しました。プロトコルに従っています。クライアント側で問題に直面しています。

クライアントが着信メッセージを受信するたびに、すべてのバイトが制限内 (0 ~ 127) であれば、クライアントは onMessage() を呼び出し、着信メッセージを正常にデコードできます。ただし、127 を超える文字が 1 つ導入されるだけでも、クライアントは onClose() を呼び出します。接続が閉じられ、原因を見つけることができません。私を助けてください。

PS: Chrome 22.0 と Firefox 17.0 を使用しています。

4

2 に答える 2

1

あなたの問題はあなたがあなたのフレームを組み立てる方法に関連しているように見えますか?onmessageイベントが発生しようとしているときに終了する確立された接続があるので、フレームに関連していると思いますか?

ネットワーク->WebSocket->Google Chromeでの接続のフレームを調べたらどうなりますか?それは何と言っていますか?

範囲外かもしれませんが、XSockets.NET(C#)フレームワークの開発者の1人で、バイナリサポートがあります。興味がある場合は、最近公開した例があります。https://github.com/MagnusThor/XSockets.Binary.Controller.Exampleで見つけることができます

于 2012-11-28T14:38:29.277 に答える
1

送信フレームをどのように観察しましたか? また、観察したヘッダー バイトは何でしたか? 実際にはバイナリオペコードを正常に設定していないように思えます。これにより、ブラウザーで UTF-8 検証がトリガーされ、失敗します。

于 2012-11-29T13:33:22.863 に答える