문제 정의

클라이언트의 정보를 Websocket Session 이 가져오지 못하여 NullPointerException 발생하였고 즉, WebSocket 연결이 설정되었을 때, userId 값을 가져오는 부분에서 null이 반환되고 있습니다. 이로 인해 put() 작업에서 에러가 발생하였습니다.

Closing session due to exception for StandardWebSocketSession[id=7d4b069f-8e76-a7b9-2111-86f059197d29, uri=ws://localhost:19100/ws/connect/coin-data-per-user?userId=1]
java.lang.NullPointerException: null

원인

userId가 제대로 설정되지 않음:

image.png

해결 방안 및 결과

  1. 핸드셰이크 인터셉터 추가:
  2. 코드 수정:

다음과 같이 WebSocket 핸드셰이크 인터셉터를 사용하여 userId를 WebSocket 세션의 속성(attributes)에 저장하여 userId는 WebSocket 세션의 attributes 맵에 저장되어, 이후에 WebSocket 핸들러에서 이 속성값을 조회할 수 있습니다. 이는 사용자별로 맞춤형 데이터를 WebSocket으로 전송할 때 유용하게 사용될 수 있습니다.

image.png