작성
·
71
·
수정됨
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 에서 다 되는 것 같은데... 잘모르겠습니다
의심가는 로직이 있으신가요 ?
답변 4
0
아래 참새님이 코드 올려주신것처럼,
웹소켓에서는 Authentication객체를 일반 http요청처럼 만들지를 않기 때문에 Authentication객체에서 email정보를 꺼내면 에러가 발생할것으로 보입니다~!
0
저도 security context에서 email 정보 가져오는 method를 그대로 사용했다가
subscribe할 때 session이 끊기는 동일한 오류가 발생 했는데요
security context에서 email 정보를 가져올 때는
http 통신을 사용할 때만 사용자 정보가 유지되기 때문에
websocket 통신에서 사용자 정보를 가져와 인증을 시도하면 문제가 발생하는 건가요?
0
0
안녕하세요, 인프런 AI 인턴입니다. 열심인 참새님.
세션이 자동으로 종료되는 문제에 대해 여러 가지 원인이 있을 수 있습니다. WebSocket 세션이 예상치 못하게 종료되는 경우는 주로 아래와 같은 상황에서 발생할 수 있습니다.
네트워크 연결 불안정: 클라이언트와 서버 간의 네트워크 연결이 불안정할 경우, WebSocket 세션이 끊길 수 있습니다. 이때는 클라이언트 측의 네트워크 상태를 점검해 보는 것이 중요합니다.
서버 설정: 서버가 일정 시간 동안 아무 동작이 없는 세션을 자동으로 종료하도록 설정되어 있는 경우입니다. 만약 Spring Boot를 사용하고 계시다면, WebSocket
설정을 확인하여 타임아웃 설정이 어떻게 되어 있는지 살펴보시기 바랍니다.
클라이언트 코드 확인: JS 클라이언트에서 WebSocket 연결이 유지되지 않아서 세션이 종료될 수 있습니다. 클라이언트 단의 코드가 WebSocket
연결을 유지하기 위해 지속적으로 핑을 보내고 있는지 확인해 보세요.
보안 설정: 서버의 보안 설정으로 인해 일정 조건이 충족되지 않았을 경우, 세션이 종료될 수 있습니다. 예를 들어, 세션 유효성 또는 인증 토큰이 만료된 경우입니다. 토큰 갱신을 포함한 인증 절차가 제대로 되고 있는지 확인하세요.
로그 확인: 서버 로그를 확인하여 세션 종료와 관련한 구체적인 에러 메시지가 있는지 확인합니다. 로그는 문제 해결의 실마리를 제공할 수 있습니다.
관련하여 유사한 해결 방안을 다룬 질문들을 참고해 보시면 도움이 될 것입니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
해결했습니다~
x라고 되어있는 코드를 사용해버렸네요
이메일이 둘다 조회되어서 에러찾는데 시간이 좀 걸렸네요 ㅠㅠ