Allow sending headers with the disconnect frame
This commit is contained in:
parent
b0b6423714
commit
08f1cb454a
|
|
@ -362,9 +362,17 @@ public class DefaultStompSession implements ConnectionHandlingStompSession {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void disconnect() {
|
public void disconnect() {
|
||||||
|
disconnect(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void disconnect(@Nullable StompHeaders headers) {
|
||||||
this.closing = true;
|
this.closing = true;
|
||||||
try {
|
try {
|
||||||
StompHeaderAccessor accessor = createHeaderAccessor(StompCommand.DISCONNECT);
|
StompHeaderAccessor accessor = createHeaderAccessor(StompCommand.DISCONNECT);
|
||||||
|
if (headers != null) {
|
||||||
|
accessor.addNativeHeaders(headers);
|
||||||
|
}
|
||||||
Message<byte[]> message = createMessage(accessor, EMPTY_PAYLOAD);
|
Message<byte[]> message = createMessage(accessor, EMPTY_PAYLOAD);
|
||||||
execute(message);
|
execute(message);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -116,6 +116,12 @@ public interface StompSession {
|
||||||
*/
|
*/
|
||||||
void disconnect();
|
void disconnect();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disconnect the session by sending a DISCONNECT frame.
|
||||||
|
* @param headers the headers for the disconnect message frame
|
||||||
|
*/
|
||||||
|
void disconnect(StompHeaders headers);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A handle to use to track receipts.
|
* A handle to use to track receipts.
|
||||||
|
|
|
||||||
|
|
@ -659,4 +659,25 @@ public class DefaultStompSessionTests {
|
||||||
verifyNoMoreInteractions(this.sessionHandler);
|
verifyNoMoreInteractions(this.sessionHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void disconnectWithHeaders() {
|
||||||
|
this.session.afterConnected(this.connection);
|
||||||
|
assertTrue(this.session.isConnected());
|
||||||
|
|
||||||
|
StompHeaders headers = new StompHeaders();
|
||||||
|
headers.add("foo", "bar");
|
||||||
|
|
||||||
|
this.session.disconnect(headers);
|
||||||
|
|
||||||
|
Message<byte[]> message = this.messageCaptor.getValue();
|
||||||
|
StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
|
||||||
|
headers = StompHeaders.readOnlyStompHeaders(accessor.getNativeHeaders());
|
||||||
|
assertEquals(headers.toString(), 1, headers.size());
|
||||||
|
assertEquals(headers.get("foo").size(), 1);
|
||||||
|
assertEquals(headers.get("foo").get(0), "bar");
|
||||||
|
|
||||||
|
assertFalse(this.session.isConnected());
|
||||||
|
verifyNoMoreInteractions(this.sessionHandler);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue