Spring websocket: SubProtocolWebSocketHandler
I'm having stability issues with Spring websockets. Sometimes I have a similar exception described at https://jira.spring.io/browse/SPR-12812 .
No patch available, then I implemented my own code using a custom SubProtocolWebSocketHandler.
public class WBSSubProtocolWebSocketHandler extends SubProtocolWebSocketHandler {
private static final Logger LOG = LoggerFactory.getLogger (WBSSubProtocolWebSocketHandler.class);
public WBSSubProtocolWebSocketHandler (MessageChannel clientInboundChannel, SubscribableChannel clientOutboundChannel) {
super (clientInboundChannel, clientOutboundChannel);
}
@Override
public void afterConnectionClosed (WebSocketSession session, CloseStatus status) throws Exception {
super.afterConnectionClosed (session, status);
LOG.debug ("WebSocket Connection closed for client with session ID {}", session.getId ());
}
@Override
public void afterConnectionEstablished (WebSocketSession session) throws Exception {
// WebSocketHandlerDecorator could close the session
// https://jira.spring.io/browse/SPR-12812
if (! session.isOpen ()) {
LOG.warn ("WebSocket Connection established for client with session ID {} was closed.", Session.getId ());
return;
}
super.afterConnectionEstablished (session);
LOG.debug ("WebSocket Connection established for client with session ID {}", session.getId ());
}
@Override
public void handleTransportError (WebSocketSession session, Throwable exception) throws Exception {
super.handleTransportError (session, exception);
LOG.warn ("WebSocket transport error for client with session ID {}", session.getId ());
}
@Override
public void handleMessage (WebSocketSession session, WebSocketMessage message) throws Exception {
super.handleMessage (session, message);
LOG.debug ("Websocket incoming message ({}) from client with session ID {}", message.getPayload (). ToString (), session.getId ());
}
@Override
public void handleMessage (Message message) throws MessagingException {
super.handleMessage (message);
LOG.debug ("Websocket incoming message: {}, header {}", message);
}
}
Now my problem is to reproduce the exception to see if the problem is resolved. I have tried different ways with no success. I cannot reproduce the closing of the connection. Anyone have an idea?
We also have a second problem. The client app (angularjs app) sometimes reports that the socket network connection is lost. But I don't understand why, because on the server I have no errors / warnings in the logs. How can I identify the problem and reproduce it?
source to share
No one has answered this question yet
Check out similar questions: