websocket経由で1回のリクエストでテキストとバイナリを送信する方法はありますか?例:ファイル名(テキスト)とファイルの内容(バイナリ)websocketでテキストとバイナリを送信
私は次のように文字列としてそれらを送信することができます
JSON.stringify({filename: "test.dat", filecontent: data});
しかし、それはバイナリ(arraybuffer)としてのみファイルの内容を送信するよりも多くの時間がかかります。
websocket経由で1回のリクエストでテキストとバイナリを送信する方法はありますか?例:ファイル名(テキスト)とファイルの内容(バイナリ)websocketでテキストとバイナリを送信
私は次のように文字列としてそれらを送信することができます
JSON.stringify({filename: "test.dat", filecontent: data});
しかし、それはバイナリ(arraybuffer)としてのみファイルの内容を送信するよりも多くの時間がかかります。
バイナリは単にエンコードされたデータです。これは、JavaScriptの質問ではなく、より多くのエンコーディングに関する質問です。ここで私はそれをやるでしょう。
ビット長を指定する要求の最初に32ビット(1つの整数を表す)を設定して、test.dat
を指定します。次に、これを2つのデータソースと組み合わせます。配列バッファとしてデータを取り戻すその後BINARY
AS BINARY +含むFileContent AS
TEXT_LENGTH + TEST.DAT:あなたのペイロードには次のようになります。使用
textLengthBits = parseInt(arrBuffer.slice(0,32), 2);
テキストの長さを取得します。その後再びスライスして、
textBits = arrBuffer.slice(32, 32 + textLengthBits)
テキストを取得します。残りのビットはあなたのファイルです。
fileBits = arrBuffer.slice(32 + textLengthBits);
たぶん、あなたは、このようなMsgPackなどのバイナリデータのネイティブサポートしているさまざまなデータ交換フォーマットを見てみたいです。 – mpen
@mpen - webSocketはバイナリデータをサポートしています。 – jfriend00
@ jfriend00 Right ..私は 'JSON.stringify'を使う代わりに' msgpack.encode'を使います。 – mpen