Always set heart-beat header in STOMP CONNECTED frames
Since SPR-10954, the SimpleBrokerMessageHandler supports `heart-beats`. Even if the STOMP spec states that the `heart-beat` header is OPTIONAL, and if absent considered as `heart-beat: 0,0`, some clients rely on this to be set in CONNECTED frames. This commit adds this header information even if no task scheduler/heart-beat have been configured. See: https://stomp.github.io/stomp-specification-1.2.html#Heart-beating Issue: SPR-10954
This commit is contained in:
@@ -150,6 +150,25 @@ public class StompSubProtocolHandlerTests {
|
||||
"user-name:joe\n" + "\n" + "\u0000", actual.getPayload());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handleMessageToClientWithSimpConnectAckDefaultHeartBeat() {
|
||||
|
||||
StompHeaderAccessor accessor = StompHeaderAccessor.create(StompCommand.CONNECT);
|
||||
accessor.setHeartbeat(10000, 10000);
|
||||
accessor.setAcceptVersion("1.0,1.1");
|
||||
Message<?> connectMessage = MessageBuilder.createMessage(EMPTY_PAYLOAD, accessor.getMessageHeaders());
|
||||
|
||||
SimpMessageHeaderAccessor ackAccessor = SimpMessageHeaderAccessor.create(SimpMessageType.CONNECT_ACK);
|
||||
ackAccessor.setHeader(SimpMessageHeaderAccessor.CONNECT_MESSAGE_HEADER, connectMessage);
|
||||
Message<byte[]> ackMessage = MessageBuilder.createMessage(EMPTY_PAYLOAD, ackAccessor.getMessageHeaders());
|
||||
this.protocolHandler.handleMessageToClient(this.session, ackMessage);
|
||||
|
||||
assertEquals(1, this.session.getSentMessages().size());
|
||||
TextMessage actual = (TextMessage) this.session.getSentMessages().get(0);
|
||||
assertEquals("CONNECTED\n" + "version:1.1\n" + "heart-beat:0,0\n" +
|
||||
"user-name:joe\n" + "\n" + "\u0000", actual.getPayload());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handleMessageToClientWithSimpHeartbeat() {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user