Task 요약
방이 개설될 경우 사용자들의 요청을 처리할 수 있도록 합니다.
세부 설명
핵심 목표
: 웹소켓을 통한 실시간 데이터를 개설된 방 내에서 주고받을 수 있게 합니다.
요구사항 및 조건
:
[ ] 방이 생성되어야 합니다.
[ ] 내부 사용자들끼리 요청을 주고받을 수 있어야 합니다.
고민과 해결
실시간으로 방마다의 요청과 응답을 제공하는 방법
WebSocket
장점
실시간으로 양방향 통신이 가능합니다.
단점
‘방’이라는 개념을 도입하려면 커스텀해줘야 할 부분이 굉장히 많습니다(프로토콜의 일종이기에, 부가적인 기능이 없습니다).
Socket.io
장점
WebSocket 외 여러 통신들을 추상화한 라이브러리입니다.
만약 WebSocket이 실질적으로 불가능한 라이브러리 혹은 환경이라면 Long Polling 등을 통해 양방향 통신을 가능하게 해줍니다.
이미 ‘방’이라는 개념이 도입되어 있습니다.
pub/sub을 이용하는 것으로 보입니다. 방 중복 구독을 막을 수 있는 기능이 있다면 확실히 도움 될 듯 합니다. 해당하는 방법이 없는 경우 서버 내부에서 로직을 작성하면 가능하지 않을까요?
단점
클라이언트의 방 중복 구독을 막아야 합니다.
클라이언트가 어떤 곳을 구독하고 있는지 알고 있어야 합니다.
클라이언트가 구독을 하는 게 아니라, 서버 쪽에서 클라이언트를 강제 구독시키는 방법이 있을까요?
만약 없다면, ‘방’의 개념을 우리가 지정해줘야 할 듯 합니다(WeekMap을 사용하면 좋을 것 같아요!).
만약 이를 세션에 기록하고, 클라이언트의 구독 요청을 모두 막아 놓는다면 해결될 듯 합니다.
클라이언트의 커스텀 요청을 막을 수 있어야 합니다.
클라이언트가 특정 방에 대해 메시지를 전송할 수 있게 만들면 좋지 않을 것 같아요.
클라이언트들은 무조건 한 채널로 메시지를 전송하고, 수신한 서버가 이를 이용하면 되지 않을까요?
송신자는 어떤 방에 입장해 있는가?를 확인하고 해당 방에 브로드캐스팅하면 될 것 같습니다.