Make WebSocket fields available after it is closed
Update some native WebSocket session getters to return basic information after it is closed. It is required for example in SubProtocolWebSocketHandler#afterConnectionEstablished() or StompSubProtocolHandler#afterSessionStarted(). Issue: SPR-11621
This commit is contained in:
committed by
Rossen Stoyanchev
parent
ea762b2c74
commit
a805f12374
@@ -54,7 +54,9 @@ public class StandardWebSocketSession extends AbstractWebSocketSession<Session>
|
||||
|
||||
private final InetSocketAddress remoteAddress;
|
||||
|
||||
private final Principal user;
|
||||
private Principal user;
|
||||
|
||||
private String acceptedProtocol;
|
||||
|
||||
private List<WebSocketExtension> extensions;
|
||||
|
||||
@@ -136,8 +138,7 @@ public class StandardWebSocketSession extends AbstractWebSocketSession<Session>
|
||||
@Override
|
||||
public String getAcceptedProtocol() {
|
||||
checkNativeSessionInitialized();
|
||||
String protocol = getNativeSession().getNegotiatedSubprotocol();
|
||||
return StringUtils.isEmpty(protocol)? null : protocol;
|
||||
return this.acceptedProtocol;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -182,6 +183,15 @@ public class StandardWebSocketSession extends AbstractWebSocketSession<Session>
|
||||
return (getNativeSession() != null && getNativeSession().isOpen());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initializeNativeSession(Session session) {
|
||||
super.initializeNativeSession(session);
|
||||
if(this.user == null) {
|
||||
this.user = session.getUserPrincipal();
|
||||
}
|
||||
this.acceptedProtocol = session.getNegotiatedSubprotocol();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void sendTextMessage(TextMessage message) throws IOException {
|
||||
getNativeSession().getBasicRemote().sendText(message.getPayload(), message.isLast());
|
||||
|
||||
Reference in New Issue
Block a user