HTML5、WebSocket、およびファイル API を使用していくつかの実験を試みています。Tomcat7 WebSocket 実装を使用しています。サーブレットからテキスト メッセージを送受信できます。今やりたいことは、サーブレットからクライアントの JSON オブジェクトに送信することですが、クライアントで JSON.parse (または同様のもの) をスキップするためにテキスト メッセージを避けたいので、バイナリ メッセージを送信しようとしています。 . サーブレットの部分は非常に単純です。
String s = "{arr : [1,2]}";
CharBuffer cbuf = CharBuffer.wrap(s);
CharsetEncoder encoder = Charset.forName("UTF-8").newEncoder();
getWsOutbound().writeBinaryMessage(encoder.encode(cbuf));
getWsOutbound().flush();
このメッセージの後、クライアントで、Blob オブジェクト ( http://www.w3.org/TR/FileAPI/#dfn-Blob )に変換されたバイナリ フレームを受信したことがわかります。問題は、Blob から JSON オブジェクトを取得できるかどうかです。私は FileReader インターフェース ( http://www.w3.org/TR/FileAPI/#FileReader-interface ) を調べ、このようなコードを使用して FileReader で何ができるかを調べました (最初の行でまったく新しいブロブなので、必要に応じてオンザフライでテストできます):
var b = new Blob([{"test": "toast"}], {type : "application/json"});
var fr = new FileReader();
fr.onload = function(evt) {
var res = evt.target.result;
console.log("onload",arguments, res, typeof res);
};
fr.readAsArrayBuffer(b);
ファイルリーダーの実装で見たすべての「readAs ...」メソッドを使用します(Chrome 22を使用しています)。とにかく、私は有用なものを見つけられませんでした。
何か提案はありましたか?ありがとう。