웹소켓 메시지 명세서 - boostcampwm-2024/web08-BooQuiz GitHub Wiki
클라이언트 → 서버 메시지
-
start
이벤트-
용도: 클라이언트가 퀴즈를 시작하고 싶을 때 사용.
-
송신 데이터: 없음
{ "event": "start", }
-
서버 응답 데이터:
{ "event": "start", "data": "OK" }
-
-
submit
이벤트-
용도: 클라이언트가 퀴즈의 답을 제출할 때 사용.
-
송신 데이터:
quizSubmit
객체{ "event": "submit", "data": { index: 0; answer: "abc"; submittedAt: 172392390; } }
-
서버 응답 데이터:
{ "event": "submit", "data": "OK" }
-
서버 → 클라이언트 메시지
-
nextQuiz
이벤트- 용도: 새로운 퀴즈를 클라이언트에 전달.
- 송신 데이터: 다음 퀴즈 정보 (
nextQuiz
)-
데이터 형식
interface CurrentQuizDto { readonly question: string; readonly stage: 'LOBBY' | 'WAITING' | 'IN_PROGRESS' | 'COMPLETED' | 'RESULT'; readonly currentIndex: number; readonly startTime: number; readonly deadlineTime: number; }
-
예시
{ "event": "nextQuiz", "data": { stage: "WAITING", question: "질문1", currentIndex: 0, playTime: 3000, startTime: 172392390, deadlineTime: 172395390, } }
-
-
finish
이벤트- 용도: 퀴즈가 더 이상 없을 때 전송.
- 송신 데이터: 없음
-
예시
{ "event": "finish" }
-
-
quizTimeOut
이벤트- 용도: 클라이언트가 주어진 시간 내에 답을 제출하지 않은 경우.
- 송신 데이터: 없음
-
예시
{ "event": "quizTimeOut" }
-
-
summary
이벤트- 용도: 퀴즈 종료 후 클라이언트에게 최종 결과를 전달.
- 송신 데이터: 요약 결과 (
summaryResult
)-
데이터 형식
interface QuizResultSummaryDto { score: number; submits: SubmittedQuiz[]; quizzes: Quiz[]; }
-
예시
{ "event": "summary", "data": { score: 0, submits: [ { index: 0, answer: "제출1", summitedAt: 172392390, receivedAt: 172392390 } ], quizzes: [ { quiestion: "문제1", answer: "답변1", playTime: "30000" } ], } }
-