Eli*_*Eli 4 spring websocket spring-websocket
我是春天的新手
我有这个课:
public class Server extends TextWebSocketHandler implements WebSocketHandler {
WebSocketSession clientsession;
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) {
clientsession = session;
}
Run Code Online (Sandbox Code Playgroud)
我需要在clientsession上检测到客户端断开连接。实现ApplicationListener,但不清楚如何注册监听器?我需要在我的web.xml中执行此操作吗?
Websocket客户端断开连接后,将调用该函数。您只需要以覆盖的方式覆盖它。WebSocketHandler afterConnectionClosedhandleTextMessage
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus){
// your code here
}
Run Code Online (Sandbox Code Playgroud)
客户端断开连接与服务器事件检测之间可能会有相当大的延迟。查看有关实时断开连接检测的详细信息。
您将需要覆盖 AbstractWebSocketMessageBrokerConfigurer 的 configureClientOutboundChannel 和 configureClientInboundChannel,提供您的拦截器
另一种方法是使用 ApplicationEvents。
这两种方法都在这里描述:http : //www.sergialmar.com/2014/03/detect-websocket-connects-and-disconnects-in-spring-4/
public class StompConnectEvent implements ApplicationListener<SessionConnectEvent> {
private final Log logger = LogFactory.getLog(StompConnectEvent.class);
public void onApplicationEvent(SessionConnectEvent event) {
StompHeaderAccessor sha = StompHeaderAccessor.wrap(event.getMessage());
String company = sha.getNativeHeader("company").get(0);
logger.debug("Connect event [sessionId: " + sha.getSessionId() +"; company: "+ company + " ]");
}
Run Code Online (Sandbox Code Playgroud)
}
我希望有帮助。如果我需要解释更多,请告诉我。
您可以使用侦听器来检测会话何时连接或关闭。您可以通过此链接找到有关侦听器的更多信息。
如何检测连接会话的示例:
@Component
public class SessionConnectedEventListener implements ApplicationListener<SessionConnectedEvent> {
private IWebSocketSessionService webSocketSessionService;
public SessionConnectedEventListener(IWebSocketSessionService webSocketSessionService) {
this.webSocketSessionService = webSocketSessionService;
}
@Override
public void onApplicationEvent(SessionConnectedEvent event) {
webSocketSessionService.saveSession(event);
}
}
Run Code Online (Sandbox Code Playgroud)
如何检测会话何时断开连接的示例:
@Component
public class SessionDisconnectEventListener implements ApplicationListener<SessionDisconnectEvent> {
private IWebSocketSessionService webSocketSessionService;
public SessionDisconnectEventListener(IWebSocketSessionService webSocketSessionService) {
this.webSocketSessionService = webSocketSessionService;
}
@Override
public void onApplicationEvent(SessionDisconnectEvent event) {
webSocketSessionService.removeSession(event);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9865 次 |
| 最近记录: |