인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

hxcva1님의 프로필 이미지

작성한 질문수

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

stomp pub/sub 구조변경

stomp관련 질문입니다.

작성

·

54

0

현재 메세지만 redis에 저장해서 공통적으로 사용되는 것으로 생각하는데 사용자의 연결정보는 각각의 서버가 가지고 있고 redis에서 메세지가 발행되는 경우 각각의 서버에서 연결된 사용자에게 메세지를 전달한다고 이해하면 될까요?

답변 2

0

bradkim님의 프로필 이미지
bradkim
지식공유자

혹시 redis pub/sub 관련한 질문이신거죠? 말씀해주신대로 사용자의 세션연결정보는 각 서버가 가지고 있습니다. redis의 pub/sub을 통해 각 서버에 메시지가 전파되고, 각 서버에서 room을 subscribe하고 있는 사용자에게 메시즈를 전달하게 됩니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. hxcva1님.

질문해주신 웹소켓과 STOMP, 그리고 Redis의 상호작용에 대한 이해를 돕기 위해 간단히 설명 드리겠습니다.

  1. 메시지 저장과 발행:

    • Redis는 주로 메시지 전달을 위한 Pub/Sub(퍼블리시/서브스크라이브) 메커니즘을 사용합니다. 여기서 Redis는 메시지 브로커 역할을 하며, 메시지를 저장하는 것이 아니라 실시간으로 발행/구독을 관리합니다.
  2. 사용자 연결 정보:

    • 사용자의 연결 정보는 일반적으로 각 서버가 개별적으로 관리합니다. 사용자가 웹소켓을 통해 서버에 연결되면, 해당 서버가 연결 상태와 사용자 정보를 로컬에 저장하여 웹소켓 이벤트를 처리합니다.
  3. 메시지 전달 과정:

    • Redis에서 메시지가 발행되면, 각 서버는 해당 메시지를 구독하여 자신에게 연결된 사용자들에게 이를 전달합니다. 즉, Redis는 메시지가 어떤 서버로 전송될지에 대해 신경 쓰지 않고, 모든 구독 서버가 메시지를 받게 됩니다.

이와 같은 원리로, 중앙의 Redis는 분산된 여러 서버가 한 메시지 소스를 가질 수 있도록 도와주며, 각 서버는 자신의 클라이언트들에게 메시지를 전달하는 방식으로 작동합니다.

유사한 질문과 답변을 더 확인하시고 싶으시면, 아래 유용한 자료 링크를 참고하세요:

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

hxcva1님의 프로필 이미지

작성한 질문수

질문하기