@Test public void afterConnectionEstablished() throws Exception { @SuppressWarnings("resource") AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); context.refresh(); EchoHandler.reset(); PerConnectionWebSocketHandler handler = new PerConnectionWebSocketHandler(EchoHandler.class); handler.setBeanFactory(context.getBeanFactory()); WebSocketSession session = new TestWebSocketSession(); handler.afterConnectionEstablished(session); assertEquals(1, EchoHandler.initCount); assertEquals(0, EchoHandler.destroyCount); handler.afterConnectionClosed(session, CloseStatus.NORMAL); assertEquals(1, EchoHandler.initCount); assertEquals(1, EchoHandler.destroyCount); }
@Override public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception { try { getHandler(session).afterConnectionClosed(session, closeStatus); } finally { destroyHandler(session); } }
@Bean(autowire = Autowire.BY_TYPE) public WebSocketHandler subscriptionWebSocketHandler() { PerConnectionWebSocketHandler retVal = new PerConnectionWebSocketHandler(SubscriptionWebsocketHandler.class); return retVal; }
@SpringBootApplication @RestController @EnableWebSocket @EnableConfigurationProperties(HandlerSettings.class) public class MyController implements WebSocketConfigurer { @Autowired private BeanFactory beanFactory; @Bean public WebSocketHandler myHandler() { PerConnectionWebSocketHandler perConnectionWebSocketHandler = new PerConnectionWebSocketHandler(MyHandler.class); perConnectionWebSocketHandler.setBeanFactory(beanFactory); return perConnectionWebSocketHandler; } }
@Override public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception { getHandler(session).handleMessage(session, message); }
public WebSocketHandler perEchoWebSocketHandler() { return new PerConnectionWebSocketHandler(ChatWebSocketHandler.class); }
@Override public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { getHandler(session).handleTransportError(session, exception); }
@Bean public WebSocketHandler myHandlerDecorator() { return new ExceptionWebSocketHandlerDecorator( new PerConnectionWebSocketHandler(MyHandler.class))); }
@Override public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception { try { getHandler(session).afterConnectionClosed(session, closeStatus); } finally { destroyHandler(session); } }
@Override public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception { getHandler(session).handleMessage(session, message); }
@Bean(autowire = Autowire.BY_TYPE) public WebSocketHandler subscriptionWebSocketHandler() { PerConnectionWebSocketHandler retVal = new PerConnectionWebSocketHandler(SubscriptionWebsocketHandler.class); return retVal; }
@Override public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception { try { getHandler(session).afterConnectionClosed(session, closeStatus); } finally { destroyHandler(session); } }
@Override public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception { getHandler(session).handleMessage(session, message); }
@Bean public WebSocketHandler webSocketHandler() { return new PerConnectionWebSocketHandler(OfframpWebSocketHandler.class); }
@Override public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { getHandler(session).handleTransportError(session, exception); }
@Bean public WebSocketHandler snakeWebSocketHandler() { return new PerConnectionWebSocketHandler(SnakeWebSocketHandler.class); }
@Override public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception { getHandler(session).handleTransportError(session, exception); }
@Bean public WebSocketHandler myHandler() { return new PerConnectionWebSocketHandler(MyHandler.class)); } @Bean public WebSocketHandler myHandlerDecorator() { return new ExceptionWebSocketHandlerDecorator(myHandler()); }