Python で記述されたサーバーからクライアント ブラウザー (javascript を実行) にバイナリ データを転送するために、バイナリ モードで websockets を使用しようとしています。この通信はテキスト モードで実装しましたが、代わりにバイナリ モードで通信することでパフォーマンスを向上させたいと考えています。
私が見たすべての例(たとえば、これ、およびTornadoを使用するmatplotlib/webaggのソースコードを掘り下げる場合)は、バイナリモードを使用していると主張していますが、実際には生のバイナリデータをUTF-8にエンコードしているようです(または base64) 送信前のある時点で。私の見解では、これを行うと 30% から 50% のオーバーヘッドが追加されるため、真のバイナリ転送ではありません。
私の質問は、IP ベースの websocket を使用するために、バイナリ データを utf-8 または base64 にエンコードする必要がありますか? そうでない場合は、エンコードせずにこれを行う例を教えてください。
私は常に、ソケットが真のバイナリ通信をサポートしていると信じていましたが、何らかの理由で IP Websocket には当てはまらない可能性があります。おそらく、誰かが問題に光を当てることができます。この分野では過去 1 年かそこらで進歩があったようで、それが混乱を助長しています。