- SSE
- 장점: 구현이 간단함, 서버에서 일방적으로 보내주기만 하면 됨
- 단점: 굳이 웹소켓이 있는데 SSE를 추가해야 함. 페이지네이션을 위해서는 클라이언트가 요청을 해줘야 하는데 그렇게 하지 못함
- fe에서 페이지네이션 사용시 페이지 번호마다 sse 연결을 끊고 다시 연결하는 방식을 사용해야 함.
- WebSocket
- 장점: 오버헤드가 적음, 대회 참여지는 이미 웹소켓을 가지고 있음
- 단점: 채점과는 다르게, 대회 참여자가 아닌 사용자도 대시보드를 확인할 수 있어야 하기 때문에 사용자 수가 아주 많아질 수 있음. 대시보드 데이터를 얻기 위해 클라이언트가 요청을 해야 보내줄 수 있음. 요청을 하지 않으면 클라이언트가 현재 대시보드 페이지를 보고 있는지 확인할 수 없기 때문임.
- SSE + WebSocket(대회 참여자에게는 WebSocket, 나머지는 SSE)
- 장점: 위의 장단점의 중간 형태
- 단점: 구현이 복잡함. 단점이 상당히 큼
- 그 외의 폴링 방식들은 고려하지 않음
→ 결정: 웹소켓으로 대시보드 데이터를 보내주기로 한다.