inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

웹소켓/STOMP 채팅서비스(spring, vue, redis)

1:1채팅구현

세션이 종료되는데 이유를 찾지 못하겠습니다..

252

열심인 참새

작성한 질문수 32

0

채팅방 목록 메뉴에서 참여하기를 눌렀을때

connect sessiond IDnubkqe0a

total session1

subscribe 검증

sub 토큰 검증 완료

Destination: /topic/1

roomId: 1

Hibernate: select cr1_0.id,cr1_0.created_time,cr1_0.is_group_chat,cr1_0.name,cr1_0.updated_time from chat_room cr1_0 where cr1_0.id=?

disconnect sessiond IDnubkqe0a

total session0

서버에서 세션 종료 감지: nubkqe0a

세션이 자동으로 종료됩니다..
당연히 채팅 메세지도 화면에 안나오는데
토큰 검증은 StompWebSocketConfig 에서 다 되는 것 같은데... 잘모르겠습니다
의심가는 로직이 있으신가요 ?

spring-boot websocket stomp-websocket pubsub vue-3

답변 4

0

bradkim

아래 참새님이 코드 올려주신것처럼,

웹소켓에서는 Authentication객체를 일반 http요청처럼 만들지를 않기 때문에 Authentication객체에서 email정보를 꺼내면 에러가 발생할것으로 보입니다~!

0

마루쉐옴므

저도 security context에서 email 정보 가져오는 method를 그대로 사용했다가

subscribe할 때 session이 끊기는 동일한 오류가 발생 했는데요

security context에서 email 정보를 가져올 때는

http 통신을 사용할 때만 사용자 정보가 유지되기 때문에

websocket 통신에서 사용자 정보를 가져와 인증을 시도하면 문제가 발생하는 건가요?

0

열심인 참새

다시 회원가입하고 로그인하고 해도 토큰 인증까지 다 마친뒤에 세션이 끊겨버리네요 ㅠㅠ

1

열심인 참새

해결했습니다~

image.png


x라고 되어있는 코드를 사용해버렸네요
이메일이 둘다 조회되어서 에러찾는데 시간이 좀 걸렸네요 ㅠㅠ


0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 열심인 참새님.

세션이 자동으로 종료되는 문제에 대해 여러 가지 원인이 있을 수 있습니다. WebSocket 세션이 예상치 못하게 종료되는 경우는 주로 아래와 같은 상황에서 발생할 수 있습니다.

  1. 네트워크 연결 불안정: 클라이언트와 서버 간의 네트워크 연결이 불안정할 경우, WebSocket 세션이 끊길 수 있습니다. 이때는 클라이언트 측의 네트워크 상태를 점검해 보는 것이 중요합니다.

  2. 서버 설정: 서버가 일정 시간 동안 아무 동작이 없는 세션을 자동으로 종료하도록 설정되어 있는 경우입니다. 만약 Spring Boot를 사용하고 계시다면, WebSocket 설정을 확인하여 타임아웃 설정이 어떻게 되어 있는지 살펴보시기 바랍니다.

  3. 클라이언트 코드 확인: JS 클라이언트에서 WebSocket 연결이 유지되지 않아서 세션이 종료될 수 있습니다. 클라이언트 단의 코드가 WebSocket 연결을 유지하기 위해 지속적으로 핑을 보내고 있는지 확인해 보세요.

  4. 보안 설정: 서버의 보안 설정으로 인해 일정 조건이 충족되지 않았을 경우, 세션이 종료될 수 있습니다. 예를 들어, 세션 유효성 또는 인증 토큰이 만료된 경우입니다. 토큰 갱신을 포함한 인증 절차가 제대로 되고 있는지 확인하세요.

  5. 로그 확인: 서버 로그를 확인하여 세션 종료와 관련한 구체적인 에러 메시지가 있는지 확인합니다. 로그는 문제 해결의 실마리를 제공할 수 있습니다.

관련하여 유사한 해결 방안을 다룬 질문들을 참고해 보시면 도움이 될 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

ERD 질문

0

54

2

StompHandler 관한 질문

0

80

2

리프레시 토큰은 알아서 구현하면 되는건가요??

0

79

2

cors, csrf 직접 구현

0

65

1

JWT 필터구현

0

98

2

강의 잘듣고 있습니다. 혹시 다음 강의 계획은 없으신가요?

0

57

1

STOMP 동작 과정 질문

0

48

1

chain.doFilter()

0

45

1

자바 21로 소스 작성해도 되나요?

0

60

2

메시지 브로커 선택에 관한 질문

0

65

2

WebSocket과 Spring Security 질문

0

81

2

추가 커스텀 구현 질문 있습니다.

0

60

2

connect와 동시에 구독하는데 구독 검증이 꼭 필요한가요?

0

97

2

저도 동일한 질문인데

0

78

3

token이 필요한 엔드포인트에 의도적으로 토큰 누락시 대처

0

67

2

수업자료가 왜 다 나눠져있나요?

0

78

2

메시지 전송 시 검증

0

61

2

JWT 생성 시 subject 설정에 대한 질문

0

158

3

StompHandler 질문 있습니다.

0

82

2

앱 서비스일 경우

0

84

2

웹소켓 서버 재배포시 고려해야 할 상황 질문

0

107

2

배포 오류 질문

0

124

2

/connect 경로에 대한 토큰 검증의 필요성

0

77

1

JwtTokenProvider 작성중 오류 발생으로 문의드립니다.

0

97

2