좌석 선택 페이지에 입장할 수 있는 유저 수에 제한을 두고자, 대기 큐
를 도입했다.
늦게 온 유저는 대기 큐에서, 좌석 선택 페이지
의 인원이 빠지기를 기다리게 된다. (Waiting
상태)
그리고 유저 본인의 차례가 도래하면, 좌석 선택 페이지
로 이동해 좌석을 예매할 수 있는 상태가 된다. (Selecting
상태)
근데 여기서 문제가 발생했다.
좌석 선택 페이지(Selecting 상태)
에 들어와 있다고 생각한 인원 수
와, 실제 인원 수
가 자꾸 일치하지 않았다.
이는 대기 큐에 있는 유저는 더 오랜 시간을 기다리게 만들었으며, 최악의 경우 무한 대기 현상까지도 발생 시켰다.
문제 현상은 다음과 같다:
Waiting 상태(대기 큐에 있는 상태)
에 있는 클라이언트의 번호 순서가 도래했을 때, 서버는 해당 클라이언트를 Selecting 상태(SSE에 연결한 상태)
로 옮긴다.