URL : endpoint 입력, STOMP connect header : 로그인 후 얻은 토큰값 입력 후 Connet 버튼 클릭
StompHandler 클래스 - preSend 메소드에서 클라이언트가 CONNECT할 때 헤더로 보낸 Authorization에 담긴 jwt Token을 검증
StompHeaderAccessor.wrap으로 message를 감싸면 STOMP의 헤더에 직접 접근할 수 있습니다. 위에서 작성한 클라이언트에서 보낸 JWT가 들어있는 헤더 Authorization을StompHeaderAccessor.getNativeHeader("Authorization") 메서드를 통해 받아올 수 있고
받아온 헤더의 값은 JWT가 됩니다.
StompWebSocketConfig 클래스 내 StompHandler를 인터셉터 등록(JWT 인증 기반 웹 소켓 사용이 가능)
public void configureClientInboundChannel(ChannelRegistration registration) { // 핸들러 등록
// connect / disconnect 인터셉터
registration.interceptors(stompHandler);
}
받은 JWT를 검증해 정상적으로 소켓을 사용할 수 있도록 동작합니다.
STOMP subscribe destination / 판매자 그로인 후 토근값 입력 (받는쪽) : /sub/tradechat/{roomId} - @DestinationVariable 로 roomId 받아와 roomId 설정 → 입력 후 subscribe 클릭 → subscribe destination /sub/tradechat/1 success
창 하나 더 띄워서 구매자 아이디로 로그인 후 토큰 값 입력 (보내는쪽) : STOMP send header → STOMP connect header 와 동일하게 입력, STOMP send destination → 어디로 보낼지? /pub/tradechat/message/{roomId} , Message Content → { "message":"아직 물건 안 팔렸나요????" } 입력 후 send 버튼 클릭
roomId = 1 구독한 사람들(구매자, 판매자)에게 메세지가 간다.
판매자 답변(양방향 소통)