개발자
socket.io adapter 구현을 위해 docs를 살펴보던 중 생긴 궁금증입니다. 두루뭉실하게 소켓을 관리하는 것이 adapater이고, 이 adapter들을 관리하는 것이 emitter라고 받아들여지기는 하지만, 정확한 개념은 아닌 것 같아 질문 남깁니다. 둘은 어떤 차이가 있는지, 어떠한 맥락에서 사용되는지도 같이 알려주시면 감사하겠습니다.
답변 1
안녕하세요 :) Adapter와 Emitter는 디자인 패턴의 일종입니다. Adapter는 GoF 디자인 패턴의 구조 패턴 중 하나인데, 인터페이스가 다른 것들을 연결해 주기 위한 구조적 개념입니다. Emitter는 Publisher-Subscriber 패턴과 유사한데, 이벤트 전달 또는 메시지 전달하는 행동 개념입니다. 그래서 이미지 상에서 Adapter가 중간에 있는 이유가 다른 것들을 연결해 주기 위해서입니다 :)
손윤석
작성자
한양대 ERICA 컴퓨터학부 • 2024년 02월 05일
알림을 꺼놓아서 감사인사가 늦었습니다. 답변 감사드립니다!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 01월 31일
Socket.IO에서 Adapter와 Emitter는 매우 중요한 역할을 합니다. 그러나 둘은 다른 목적과 기능을 가지고 있어서 이해하면 도움이 될 수 있습니다. 1. Emitter: Emitter는 Socket.IO에서 이벤트를 방출하는데 사용됩니다. 즉, 특정 이벤트가 발생했을 때 다른 부분의 코드에게 그 사실을 알리는 역할을 합니다. 이벤트 드리븐 프로그래밍에서 중요한 개념으로, 이벤트가 발생하면 시스템의 다른 부분들에게 통보하는 방식으로 작동합니다. 2. Adapter: 반면에 Adapter는 서버 및 클라이언트 간 메시징과 각각의 관계를 추상화하여 관리하는 역할을 담당합니다. 기본적으로, 어댑터는 모든 워커와 가능한 모든 소켓 간의 통신을 가능하게 해줍니다. Socket.IO는 기본적으로 메모리에서 소켓 세션 정보를 저장하지만 여러 서버 인스턴스나 프로세스를 사용하여 확장성을 높이려면 어댑터를 사용하여 세션 정보를 중앙 데이터 스토어(예: Redis)에 저장할 수 있습니다. 요약하자면, Emitter는 시스템 내에서 이벤트를 전파하는 역할을 하고, Adapter는 서버 클라이언트 간의 연결 관리와 메시지 전달 등을 담당합니다. 이 둘은 서로 다른 목적과 기능을 가지고 있으나, 모두 Socket.IO의 핵심 요소입니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!