Ich bin in der Lage JSON mit STOMP über WebSockets folgenden zu senden und empfangen Frühjahrsdokumentation . Allerdings ist die Leistung bei hohen Raten sehr schlecht, daher möchte ich die Verwendung von binären Nachrichten profilieren.
I-Nachrichten senden mit SimpMessageTemplate mit der notwendigen Broker Relais - siehe Frühling Dokumentation
%Vor%Ein JavaScript-Client empfängt Daten mit stomp.js den Standardmechanismus verwendet wird.
%Vor%Nachrichten werden empfangen, aber als Strings, mit Konsolenausgabe wie folgt. Ich erwarte eine rohe Art, wie Arraybuffer
%Vor%ich das T in STOMP steht für Text erkennen, aber der Frühling Dokumentation impliziert Binärmeldungen möglich sind zumindest mit einfachen WebSockets, auch die stomp specification gibt an
STOMP ist textbasiert, erlaubt aber auch die Übertragung von Binärdateien Nachrichten.
Update: Ich habe auf der Serverseite mehr Debugging durchgeführt. Es scheint, dass org.springframework.web.socket.TextMessage immer innerhalb von org.springframework.web.socket.messaging.StompSubProtocolHandler statt org.springframework.web.socket.BinaryMessage. Ich habe eine Feature-Anforderung für dieses SPR-12301
erstellt %Vor%Es scheint, dass org.springframework.web.socket.TextMessage immer in org.springframework.web.socket.messaging.StompSubProtocolHandler und nicht in org.springframework.web.socket.BinaryMessage verwendet wird. Ich habe eine Feature-Anforderung für dieses SPR-12301 erstellt, das akzeptiert wurde.
%Vor%Aktualisieren
Versuchen Sie, Ihren Server nur mit ByteArrayMessageConverter
:
AKTUALISIEREN
Ah! Ich sehe das. Danke:
%Vor%Von anderer Seite aus STOMP spec:
Der Text einer STOMP-Nachricht muss ein String sein. Wenn Sie JSON-Objekte senden und empfangen möchten, ...
Nach dem ArrayBuffer
:
Abrufen eines Array-Puffers aus vorhandenen Daten
- Von einer Base64-Zeichenfolge
- Von einer lokalen Datei
Also, ich denke, Sie haben kein chioce, anstatt Ihnen eine benutzerdefinierte MessageConverter
zur Verfügung zu stellen, die Ihre byte[]
in Base64 String konvertiert und sendet.
Auf der JavaScript-Seite sollten Sie diese Zeichenfolge irgendwie zu ArrayBuffer
dekodieren.
Tags und Links javascript spring websocket spring-websocket stomp