Ich versuche, etwas experimentieren mit HTML5, WebSocket und File API. Ich verwende die Tomcat7 WebSocket-Implementierung. Ich kann Textnachrichten vom Servlet senden und empfangen. Ich möchte jetzt vom Servlet zum Client JSON-Objekte senden, aber ich möchte Textnachrichten vermeiden, um JSON.parse (oder Ähnliches) auf dem Client zu überspringen, also versuche ich, binäre Nachrichten zu senden . Das Servlet Teil ist wirklich einfach:Datei-API - Blob zu JSON
String s = "{arr : [1,2]}";
CharBuffer cbuf = CharBuffer.wrap(s);
CharsetEncoder encoder = Charset.forName("UTF-8").newEncoder();
getWsOutbound().writeBinaryMessage(encoder.encode(cbuf));
getWsOutbound().flush();
Nach dieser Nachricht auf dem Client ich sehe, dass ich einen binären Frame empfangen, das zu einem Blob-Objekt umgewandelt wird (http://www.w3.org/TR/FileAPI/#dfn-Blob). Die Frage ist: ist es möglich, das JSON-Objekt aus dem Blob zu bekommen? Ich schaute auf die FileReader-Schnittstelle (http://www.w3.org/TR/FileAPI/#FileReader-interface), und ich habe Code wie folgt verwendet, um zu sehen, was der FileReader tun kann (die erste Zeile erstellt einen brandneuen Blob, so dass Sie on-the-fly testen können):
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);
mit allen "readAs ..." Methoden, die ich auf der File Reader-Implementierung sah (ich verwende Chrome 22). Jedenfalls habe ich nichts Nützliches gefunden.
Hatten Sie einen Vorschlag? Vielen Dank.
Wie denken Sie, Sie JSON-Strings als binäre Nachrichten senden können? JSON ist nur eine Kodierung für Objekte, und Sie können die implementierungsabhängige Binärstruktur nicht wirklich um eine "Parse" -Funktion herum senden. – Bergi
ja du hast Recht, es ergibt keinen Sinn. Vielen Dank! – Antonio