Согласно (Is it possible to send binary data with STOMP over WebSockets using Spring-WebSockets?), представляется возможным отправлять бинарные сообщения с помощью STOMP через веб-сайты.Отправка двоичного сообщения из java WebSocketStompClient
я настроил WebSocketStompClient следующим образом:
List<Transport> transports = new ArrayList<>(1);
transports.add(new WebSocketTransport(new StandardWebSocketClient()));
WebSocketClient transport = new SockJsClient(transports);
WebSocketStompClient stompClient = new WebSocketStompClient(transport);
// using a custom converter to serialize java object to byte[]
stompClient.setMessageConverter(new SerializedJavaObjectMessageConverter());
Я использую следующий отправить сообщение:
StompHeaders stompHeaders = new StompHeaders();
stompHeaders.setDestination("/app/greetings");
stompHeaders.setContentType(MimeTypeUtils.APPLICATION_OCTET_STREAM);
session.send(stompHeaders, new Greeting(message));
я получаю исключение из следующего утверждения:
Assert.isInstanceOf(TextMessage.class, message, this + " supports text messages only.");
найдено в org.springframework.web.socket.sockjs.client.AbstractClientSockJs (ниже), которые o олько появляется для поддержки TextMessage:
@Override
public final void sendMessage(WebSocketMessage<?> message) throws IOException {
Assert.state(State.OPEN.equals(this.state), this + " is not open, current state=" + this.state);
Assert.isInstanceOf(TextMessage.class, message, this + " supports text messages only.");
String payload = ((TextMessage) message).getPayload();
payload = getMessageCodec().encode(new String[] { payload });
payload = payload.substring(1); // the client-side doesn't need message framing (letter "a")
message = new TextMessage(payload);
if (logger.isTraceEnabled()) {
logger.trace("Sending message " + message + " in " + this);
}
sendInternal((TextMessage) message);
}
ли новый клиент Java WebSocketStompClient (4,2-СНАПШОТ), выполненный, как указано выше (т.е. используя SockJS для резервного копирования) поддерживают отправку двоичных сообщений?
UPDATE:
Следующая конфигурация клиент работает:
WebSocketClient transport = new StandardWebSocketClient();
WebSocketStompClient stompClient = new WebSocketStompClient(transport)
Не могли бы вы уточнить, в чем ваш вопрос? –
@QPaysTaxes - В соответствии с вашим комментарием я переформулировал вопрос. – stacktrace
Согласно комментариям Rossen Stoyanchev на https://jira.spring.io/browse/SPR-12301, SockJs не поддерживает двоичные сообщения (https://github.com/sockjs/sockjs-protocol/issues?q= это% 3Aopen + является% 3Aissue + двоичный) – stacktrace