Spring WebFlux WebSocketSession으로 http handshake request 정보 넘기기
Spring Webflux 기반으로 WebSocket을 구현하려 했다.
WebSocket 요청은 WebSocketHandlerAdapter를 통해 핸드셰이킹 과정을 거치고 ws 프로토콜로 통신하게된다.
WebSocketHandler 를 구현하여 웹소켓 요청을 핸들링하게 되는데.
handle 메소드로 WebSocketSession을 넘겨준다.
WebSocketSession 에서 handshake 정보를 가져오기 위해
webSocketSession.getHandshakeInfo() 를 사용할 수 있는데.
개인적으론 무언가 조금 부실한 느낌이 들었다.
HandlerMapping 을 통해 uri 별 WebSocketHandler 를 맵핑했는데.
맵핑 url 패턴 이라든지 이러한 정보는 WebSocketHandlerAdapter의 WebSocketExchange 까지는 Attributes로 넘어오지만.
WebSocketSession 까지 전달되지는 않는다.
때문에 WebSocketHandlerAdapter도 까보고 HandshakeWebSocketService도 까보다가 .
아래와 같이 수정하여 Attributes 전체를 넘기게끔 해봤다.
WebSocketExchange 에서 Request 정보를 참조하여 queryParams름 넘기는데 사용 할 수도 있겠다.
- 다른 방법을 찾는다면 지워야지…
- Github