강의 내 1 번 방법에 대한 질문
162
작성한 질문수 42
강의 설명중
1 번 방법에서
누가 서버에 커넥션을 맺고 있고 subscribe 하는지 서버에 메모리를 만들어서
관리하는 로직을 사용한다고 하셨는데
이전에 강의에서 배운내용에 따르면
스프링과 stomp 는 기본적으로 세션관리를 내부적으로 처리한다고 하셔서
즉 저희가 직접 접근을 하지못하는데 이러면
이벤트 리스너로 따로 sessions라는 자료구조를 만든 것을 활용해서
코드를 작성해야 하잖아요 ?
그리고 세션은 랜덤으로 스프링에서 생성하는데
이러면 세션이 몇개인지 카운트 및 각각 세션id가 부여되긴하는데
그게 어떤 사용자인지 구분이 안되기에
StompHandler에서 connect 맺을때
검증 후에 추가적으로
이메일정보를
String email = claims.getSubject();
accessor.getSessionAttributes().put("email", email);
로 설정해서
이벤트 리스너에 넘겨서 세션을 저장하는 식으로 생각했는데 맞을까요 ?
이후 서버에서 처리할때 subscribe하면서 , 동시에 누가 서버에 커넥션을 맺고있는지 아닌지 여부를 파악하는
(다소 복잡한) 로직을 작성해서 처리할 수 있다 이게 맞는 흐름일까요 ?
답변 2
0
안녕하세요, 인프런 AI 인턴입니다. ckstj8027님.
웹소켓과 STOMP를 사용하여 서버에서의 세션 관리를 다루는 방법에 대해 깊이 있는 질문을 주셨네요. 강의에서 설명된 개념을 바탕으로 현재 이해하신 부분을 강화할 수 있도록 몇 가지 포인트를 정리해 드리겠습니다.
세션 관리:
- STOMP와 Spring을 사용하면 기본적으로 웹소켓 세션 관리는 내부적으로 처리됩니다. 하지만, 세션을 추적하거나 추가 정보를 유지하기 위해 특정 이벤트 리스너를 구현할 수 있습니다.
- 말씀하신 대로,
StompHandler에서 사용자 이메일 정보를 세션에 저장하는 방법은 적절합니다. 이렇게 함으로써 누가 어떤 세션인지 파악할 수 있고, 세션의 상태를 유지할 수 있습니다.
- STOMP와 Spring을 사용하면 기본적으로 웹소켓 세션 관리는 내부적으로 처리됩니다. 하지만, 세션을 추적하거나 추가 정보를 유지하기 위해 특정 이벤트 리스너를 구현할 수 있습니다.
이벤트 리스너 및 세션 정보 관리:
- 세션이 생성되거나 닫힐 때 이벤트를 캐치해서, 사용자 세션 정보를 관리하는 구조체(예: Map 등)에 저장할 수 있습니다. 이렇게 하면 현재 연결 상태 및 사용자 정보를 세션에 편리하게 유지할 수 있습니다.
- 예를 들어, 사용자 이메일 정보를 세션 속성에 저장하면, 이후에 해당 세션에서 어떤 사용자가 연결되어 있는지를 파악할 수 있습니다.
- 세션이 생성되거나 닫힐 때 이벤트를 캐치해서, 사용자 세션 정보를 관리하는 구조체(예: Map 등)에 저장할 수 있습니다. 이렇게 하면 현재 연결 상태 및 사용자 정보를 세션에 편리하게 유지할 수 있습니다.
구독(subscribe) 및 세션 상태 관리:
- 사용자가 특정 토픽에 구독하도록 하면서, 관련 정보를 세션에 저장하고 관리할 수 있습니다.
- 세션이 연결되었는지 여부를 파악하는 로직은 이벤트 리스너에서 커넥션 및 디스커넥션 이벤트를 감시하면서 처리하시면 복잡한 세션 상태 관리 로직이 가능합니다.
- 사용자가 특정 토픽에 구독하도록 하면서, 관련 정보를 세션에 저장하고 관리할 수 있습니다.
이와 관련된 정보를 더 알아보시려면 아래의 유사한 질문 링크를 참고해 보세요:
- 웹소켓에서의 세션 및 사용자 정보 관리 - 사용자 세션 및 정보를 STOMP와 Spring을 통해 관리하는 방법
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
ERD 질문
0
54
2
StompHandler 관한 질문
0
80
2
리프레시 토큰은 알아서 구현하면 되는건가요??
0
80
2
cors, csrf 직접 구현
0
65
1
JWT 필터구현
0
98
2
강의 잘듣고 있습니다. 혹시 다음 강의 계획은 없으신가요?
0
58
1
STOMP 동작 과정 질문
0
48
1
chain.doFilter()
0
45
1
자바 21로 소스 작성해도 되나요?
0
60
2
메시지 브로커 선택에 관한 질문
0
65
2
WebSocket과 Spring Security 질문
0
81
2
추가 커스텀 구현 질문 있습니다.
0
61
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





