문제
대기 큐 기능은 다음과 같은 요구 사항이 있다.
- 클라이언트가 자신의 앞에 남은 사람 수를 알 수 있어야 한다.
- 클라이언트가 전체 대기 중인 인원 수를 알 수 있어야 한다.
- 클라이언트가 예상 대기 시간을 알 수 있어야 한다.
- 클라이언트가 SSE로 서버와 연결 되어 지속적으로 위 정보들을 얻을 수 있어야 한다.
- 클라이언트가 좌석 선택 페이지로 진입할 시점을 명확히 알 수 있어야 한다.
- 클라이언트가 스크립트를 조작하더라도 올바른 시점 이후에만 좌석 선택 페이지로 진입할 수 있어야 한다.
만약 이를 충족하기 위해, 클라이언트에게
- 대상 클라이언트 앞에 남은 인원 수
- 전체 대기 인원 수
- 대상 클라이언트의 예상 대기 시간
- 좌석 선택 페이지 진입 신호(해당되는 시점에만)
이렇게 데이터를 꾸려 SSE로 전송한다고 하면, 대기 큐 기능에선 하나의 Subject를 통해 SSE를 브로드캐스트 할 수가 없다.
왜냐하면 클라이언트마다 전용 데이터를 제공해야 하기 때문이다.
SSE 브로드캐스트
그러면 위 문제에서 겪었던, 아래 그림과 같은 비효율이 다시 발생하게 된다.
