Skip to content

Commit dc57cb2

Browse files
committed
Update SessionDisconnectEvent
SessionDisconnectEvent now extends AbstractSubProtocolEvent. Issue: SPR-12156
1 parent 4af9851 commit dc57cb2

File tree

2 files changed

+8
-11
lines changed

2 files changed

+8
-11
lines changed

spring-websocket/src/main/java/org/springframework/web/socket/messaging/SessionDisconnectEvent.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package org.springframework.web.socket.messaging;
1818

1919

20-
import org.springframework.context.ApplicationEvent;
20+
import org.springframework.messaging.Message;
2121
import org.springframework.util.Assert;
2222
import org.springframework.web.socket.CloseStatus;
2323

@@ -32,21 +32,18 @@
3232
* @since 4.0.3
3333
*/
3434
@SuppressWarnings("serial")
35-
public class SessionDisconnectEvent extends ApplicationEvent {
35+
public class SessionDisconnectEvent extends AbstractSubProtocolEvent {
3636

3737
private final String sessionId;
3838

3939
private final CloseStatus status;
4040

41+
4142
/**
4243
* Create a new event.
43-
*
44-
* @param source the component that published the event (never {@code null})
45-
* @param sessionId the disconnect message
46-
* @param closeStatus
4744
*/
48-
public SessionDisconnectEvent(Object source, String sessionId, CloseStatus closeStatus) {
49-
super(source);
45+
public SessionDisconnectEvent(Object source, Message<byte[]> message, String sessionId, CloseStatus closeStatus) {
46+
super(source, message);
5047
Assert.notNull(sessionId, "'sessionId' must not be null");
5148
this.sessionId = sessionId;
5249
this.status = closeStatus;

spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -447,10 +447,10 @@ public void afterSessionEnded(WebSocketSession session, CloseStatus closeStatus,
447447
String userName = getSessionRegistryUserName(principal);
448448
this.userSessionRegistry.unregisterSessionId(userName, session.getId());
449449
}
450+
Message<byte[]> message = createDisconnectMessage(session);
450451
if (this.eventPublisher != null) {
451-
publishEvent(new SessionDisconnectEvent(this, session.getId(), closeStatus));
452+
publishEvent(new SessionDisconnectEvent(this, message, session.getId(), closeStatus));
452453
}
453-
Message<?> message = createDisconnectMessage(session);
454454
SimpAttributes simpAttributes = SimpAttributes.fromMessage(message);
455455
try {
456456
SimpAttributesContextHolder.setAttributes(simpAttributes);
@@ -462,7 +462,7 @@ public void afterSessionEnded(WebSocketSession session, CloseStatus closeStatus,
462462
}
463463
}
464464

465-
private Message<?> createDisconnectMessage(WebSocketSession session) {
465+
private Message<byte[]> createDisconnectMessage(WebSocketSession session) {
466466
StompHeaderAccessor headerAccessor = StompHeaderAccessor.create(StompCommand.DISCONNECT);
467467
if (getHeaderInitializer() != null) {
468468
getHeaderInitializer().initHeaders(headerAccessor);

0 commit comments

Comments
 (0)