下面列出了怎么用org.springframework.messaging.simp.stomp.StompEncoder的API类实例代码及写法,或者点击链接到github查看源代码。
@Test
public void connectReceiveAndCloseWithStompFrame() throws Exception {
StompHeaderAccessor accessor = StompHeaderAccessor.create(StompCommand.SEND);
accessor.setDestination("/destination");
MessageHeaders headers = accessor.getMessageHeaders();
Message<byte[]> message = MessageBuilder.createMessage("body".getBytes(StandardCharsets.UTF_8), headers);
byte[] bytes = new StompEncoder().encode(message);
TextMessage textMessage = new TextMessage(bytes);
SockJsFrame frame = SockJsFrame.messageFrame(new Jackson2SockJsMessageCodec(), textMessage.getPayload());
String body = "o\n" + frame.getContent() + "\n" + "c[3000,\"Go away!\"]";
ClientHttpResponse response = response(HttpStatus.OK, body);
connect(response);
verify(this.webSocketHandler).afterConnectionEstablished(any());
verify(this.webSocketHandler).handleMessage(any(), eq(textMessage));
verify(this.webSocketHandler).afterConnectionClosed(any(), eq(new CloseStatus(3000, "Go away!")));
verifyNoMoreInteractions(this.webSocketHandler);
}
@Test
public void connectReceiveAndCloseWithStompFrame() throws Exception {
StompHeaderAccessor accessor = StompHeaderAccessor.create(StompCommand.SEND);
accessor.setDestination("/destination");
MessageHeaders headers = accessor.getMessageHeaders();
Message<byte[]> message = MessageBuilder.createMessage("body".getBytes(StandardCharsets.UTF_8), headers);
byte[] bytes = new StompEncoder().encode(message);
TextMessage textMessage = new TextMessage(bytes);
SockJsFrame frame = SockJsFrame.messageFrame(new Jackson2SockJsMessageCodec(), textMessage.getPayload());
String body = "o\n" + frame.getContent() + "\n" + "c[3000,\"Go away!\"]";
ClientHttpResponse response = response(HttpStatus.OK, body);
connect(response);
verify(this.webSocketHandler).afterConnectionEstablished(any());
verify(this.webSocketHandler).handleMessage(any(), eq(textMessage));
verify(this.webSocketHandler).afterConnectionClosed(any(), eq(new CloseStatus(3000, "Go away!")));
verifyNoMoreInteractions(this.webSocketHandler);
}
@Test
public void connectReceiveAndCloseWithStompFrame() throws Exception {
StompHeaderAccessor accessor = StompHeaderAccessor.create(StompCommand.SEND);
accessor.setDestination("/destination");
MessageHeaders headers = accessor.getMessageHeaders();
Message<byte[]> message = MessageBuilder.createMessage("body".getBytes(Charset.forName("UTF-8")), headers);
byte[] bytes = new StompEncoder().encode(message);
TextMessage textMessage = new TextMessage(bytes);
SockJsFrame frame = SockJsFrame.messageFrame(new Jackson2SockJsMessageCodec(), textMessage.getPayload());
String body = "o\n" + frame.getContent() + "\n" + "c[3000,\"Go away!\"]";
ClientHttpResponse response = response(HttpStatus.OK, body);
connect(response);
verify(this.webSocketHandler).afterConnectionEstablished(any());
verify(this.webSocketHandler).handleMessage(any(), eq(textMessage));
verify(this.webSocketHandler).afterConnectionClosed(any(), eq(new CloseStatus(3000, "Go away!")));
verifyNoMoreInteractions(this.webSocketHandler);
}
public String encodeRaw(StompHeaderAccessor accessor, byte[] payload) {
log.debug("encode STOMP command: {}", accessor.getCommand());
MessageHeaders headers = accessor.getMessageHeaders();
Message<byte[]> message = MessageBuilder.createMessage(payload != null ? payload : "".getBytes(StandardCharsets.UTF_8), headers);
return new String((new StompEncoder()).encode(message), StandardCharsets.UTF_8);
}
private void sendSimpleMessage(WebSocketSession session, StompHeaderAccessor accessor) {
MessageHeaders headers = accessor.getMessageHeaders();
Message<byte[]> message1 = MessageBuilder.createMessage("".getBytes(StandardCharsets.UTF_8), headers);
byte[] bytes = new StompEncoder().encode(message1);
TextMessage textMessage = new TextMessage(bytes);
send2Remote(session, textMessage);
}
private void handleOnEvent(String headerIdStr,
String subscriptionId,
WeEvent event,
WebSocketSession session) {
StompHeaderAccessor accessor = StompHeaderAccessor.create(StompCommand.MESSAGE);
// package the return frame
accessor.setSubscriptionId(headerIdStr);
accessor.setNativeHeader("subscription-id", subscriptionId);
accessor.setMessageId(headerIdStr);
accessor.setDestination(event.getTopic());
accessor.setContentType(new MimeType("text", "plain", StandardCharsets.UTF_8));
// set custom properties in header
for (Map.Entry<String, String> custom : event.getExtensions().entrySet()) {
accessor.setNativeHeader(custom.getKey(), custom.getValue());
}
// set eventId in header
accessor.setNativeHeader(WeEventConstants.EXTENSIONS_EVENT_ID, event.getEventId());
// payload == content
MessageHeaders headers = accessor.getMessageHeaders();
Message<byte[]> message = MessageBuilder.createMessage(event.getContent(), headers);
byte[] bytes = new StompEncoder().encode(message);
// send to remote
send2Remote(session, new TextMessage(bytes));
}
/**
* Configure a {@link StompEncoder} for encoding STOMP frames.
* @since 4.3.5
*/
public void setEncoder(StompEncoder encoder) {
this.stompEncoder = encoder;
}
/**
* Configure a {@link StompEncoder} for encoding STOMP frames.
* @since 4.3.5
*/
public void setEncoder(StompEncoder encoder) {
this.stompEncoder = encoder;
}