Ich versuche, etwas mit HTML5, WebSocket und File API zu experimentieren. 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 . Der Servletteil ist wirklich einfach:
%Vor%Nach dieser Nachricht sehe ich auf dem Client, dass ich einen binären Rahmen erhalten habe, der in ein Blob-Objekt ( Ссылка ). Die Frage ist: ist es möglich, das JSON-Objekt aus dem Blob zu bekommen? Ich habe mir das FileReader-Interface angeschaut ( Ссылка ), und ich habe Code wie diesen verwendet, um was zu prüfen der FileReader kann (die erste Zeile erstellt einen brandneuen Blob, so dass Sie im laufenden Betrieb testen können, wenn Sie möchten):
%Vor%verwende alle "readAs ..." Methoden, die ich in der File Reader-Implementierung gesehen habe (ich verwende Chrome 22). Jedenfalls habe ich nichts Nützliches gefunden.
Hattest du irgendeinen Vorschlag? Danke.
Was Sie tun, ist konzeptionell falsch. JSON ist eine Zeichenfolgendarstellung eines Objekts, kein Objekt selbst. Wenn Sie also eine Binärdarstellung von JSON über die Verbindung senden, senden Sie eine Binärdarstellung der Zeichenfolge. Es gibt keine Möglichkeit, JSON auf der Clientseite zu analysieren, um eine JSON-Zeichenfolge in ein JavaScript-Objekt zu konvertieren.
Sie sollten JSON unbedingt immer als Text an den Client senden, und Sie sollten immer JSON.parse aufrufen. Nichts wird für dich einfach sein.
Sie sollten readAsText () anstelle von readAsArrayBuffer()
( JSON ist am Ende Text).
Sie haben es auch versäumt, das Objekt zu stringieren (in JSON-Text konvertieren)
%Vor%Tags und Links javascript html5 json websocket