2016-06-24 15 views
2

websocket経由で1回のリクエストでテキストとバイナリを送信する方法はありますか?例:ファイル名(テキスト)とファイルの内容(バイナリ)websocketでテキストとバイナリを送信

私は次のように文字列としてそれらを送信することができます

JSON.stringify({filename: "test.dat", filecontent: data}); 

しかし、それはバイナリ(arraybuffer)としてのみファイルの内容を送信するよりも多くの時間がかかります。

+0

たぶん、あなたは、このようなMsgPackなどのバイナリデータのネイティブサポートしているさまざまなデータ交換フォーマットを見てみたいです。 – mpen

+0

@mpen - webSocketはバイナリデータをサポートしています。 – jfriend00

+0

@ jfriend00 Right ..私は 'JSON.stringify'を使う代わりに' msgpack.encode'を使います。 – mpen

答えて

3

バイナリは単にエンコードされたデータです。これは、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); 
関連する問題