WebSocket API¶
WebSocket-эндпоинты для получения уведомлений об изменениях в реальном времени.
Клиент подключается к WebSocket, получает уведомление о событии и загружает актуальные данные через REST API.
Викторина¶
Подключение¶
ws://host/api/v1/quiz/sessions/{sessionId}/ws
События от сервера¶
| Событие | Описание | Что загружать |
|---|---|---|
session_state |
Полное состояние сессии | — (данные уже в событии) |
question_started |
Начался приём ответов | GET /quiz/sessions/{id} |
votes_update |
Обновление голосов | GET /quiz/sessions/{id} |
question_revealed |
Правильный ответ показан | GET /quiz/sessions/{id} |
round_finished |
Раунд завершён | GET /quiz/sessions/{id}/results/rounds/{index} |
session_finished |
Сессия завершена | — |
Формат событий¶
{ "type": "votes_update" }
{ "type": "question_revealed" }
{ "type": "round_finished", "data": { "round_index": 0 } }
Профессии в действии¶
Подключение¶
ws://host/api/v1/interactive-video/sessions/{sessionId}/ws
События от сервера¶
Для LED-экрана:
| Событие | Описание | Что загружать |
|---|---|---|
phase_changed |
Сменилась фаза (playing → waiting → result) | GET /state |
votes_updated |
Поступил новый голос | GET /state |
scenario_finished |
Сценарий завершён, переход к следующему | GET /state |
session_finished |
Показ завершён | — |
Для мобильного клиента:
| Событие | Описание | Что загружать |
|---|---|---|
phase_changed |
Сменилась фаза (waiting → result) | GET /voting |
scenario_finished |
Сценарий завершён | GET /voting |
session_finished |
Показ завершён | — |
Мобильному клиенту не нужен votes_updated — он уже проголосовал и ждёт результат.
Формат событий¶
{ "type": "phase_changed" }
{ "type": "votes_updated" }
{ "type": "scenario_finished" }
{ "type": "session_finished" }
Фазы показа¶
| Фаза | Описание |
|---|---|
playing |
Проигрывание ролика |
waiting |
Точка голосования, сбор ответов |
result |
Показ результата |
Пример использования¶
- Клиент подключается к WebSocket
- Загружает начальное состояние через REST API
- Получает событие
{ "type": "votes_updated" } - Загружает обновлённое состояние через REST API
- Обновляет отображение