package com.qianwen.core.websocket.holder;
|
|
import org.springframework.web.socket.CloseStatus;
|
import org.springframework.web.socket.WebSocketHandler;
|
import org.springframework.web.socket.WebSocketSession;
|
import org.springframework.web.socket.handler.WebSocketHandlerDecorator;
|
|
/**
|
* 一个WebSocketHandler,(装饰器模式),处理WebSocketSession的存取和关闭
|
*/
|
public class MapSessionWebSocketHandlerDecorator extends WebSocketHandlerDecorator {
|
private final SessionKeyGenerator sessionKeyGenerator;
|
|
public MapSessionWebSocketHandlerDecorator(WebSocketHandler delegate, SessionKeyGenerator sessionKeyGenerator) {
|
super(delegate);
|
this.sessionKeyGenerator = sessionKeyGenerator;
|
}
|
|
public void afterConnectionEstablished(final WebSocketSession session) throws Exception {
|
Object sessionKey = this.sessionKeyGenerator.sessionKey(session);
|
WebSocketSessionHolder.addSession(sessionKey, session);
|
}
|
|
public void afterConnectionClosed(final WebSocketSession session, CloseStatus closeStatus) throws Exception {
|
Object sessionKey = this.sessionKeyGenerator.sessionKey(session);
|
WebSocketSessionHolder.removeSession(sessionKey, session);
|
JsonMessageFilterHolder.closeSession(session);
|
}
|
}
|