Skip to main content

Как подключиться к раунду

Подключиться к раунду можно с помощью webSocket по API /ws/rounds/{id} по ID раунда.
При первом подключении, необходимо сразу отправить json объект с access_token юзера в параметре token.
Пример:
Если токен не передан, сервер вернет ошибку и завершит websocket соединение
Если передан некорректный токен, сервер вернет ошибку и завершит websocket соединение
Если передан корректный токен, но юзера в него не приглашали, сервер вернет ошибку и закроет websocket соединение
Если передан корректный токен, сервер отправит ивент participant_connected и participant_update
В любом другом случае, сервер вернет

Статусы и ивенты

Статусы раундов и участников

Основные ивенты

Как отправлять ивенты на сервер

Каждая отправка ивента с клиента сопровождается json сообщением с type ивента и параметрами data с token и другими.

Как принимать ивенты с сервера

Каждая отправка ивента с сервера сопровождается json сообщением с type и message.

Ивенты, которые отправляет сервер

Participant connected

Название ивента participant_connected Отправляется при первом подключении юзера. Отправляется всем участникам. Отправляет json
и после этого отправляет ивент participant_update.

Participant disconnected

Название ивента participant_disconnected Отправляется при разрыве websocket соединения. Отправляется всем участникам, кроме текущего.
  1. Отключает юзера от webscocket
  2. Изменяет статус юзера на WAITING
  3. Отправляет ивент participant_disconnected
  4. Отправляет ивент participant_update
Отправляет json

Participant update

Название ивента participant_update Отправляется при изменении статуса готовности юзера, удалении или добавлении юзера из раунда. Отправляется всем участникам. Отправляет json

Round countdown

Название ивента round_countdown Отправляется, когда все участники имеют статус READY, для перехода на экран таймера. Отправляется всем участникам. Отправляет json

Round question

Название ивента round_question Отправляется, когда время таймера истекло, для перехода на экран вопроса. Отправляется всем участникам. Отправляет json

Round results

Название ивента round_results Отправляется, когда все участники ответили на вопрос или таймер ответа на вопрос закончился, для перехода на экран результатов. Отправляется всем участникам. Отправляет json

Chat history

Название ивента chat_history Отправляется, когда участник открывает чат для загрузки сообщений в ответ на ивент participant_open_chat. Отправляется только конкретному участнику. Отправляет json

New message

Название ивента new_message Отправляется, когда участник отправил сообщение в чат в ответ на ивент chat_message. Отправляется всем участникам. Отправляет json

Ивенты, которые отправляет клиент

Participant update

Ивент, который вызывается для обновления основных данных участников, таких как: name, phone, id, status. В основном срабатывает при первом подключении каждого пользователя и при смене статуса участника на READY или NOT_READY
Во всех ивентах, сервер ожидает token юзера в data параметре
Название ивента participant_update JSON BODY
Пример

Round Countdown End

Отправляется, когда время таймера истекло. Название ивента round_countdown_end Пример

Round Question End

Отправляется, когда время таймера для ответа на вопрос истекло. Название ивента round_question_end Пример

Participant answered

Отправляется, когда участник ответил на вопрос в викторине.
Время ответа участника передается строго в формате mm:ss.SSS (22:45.343) с учётом времени до тысячных долей секунды.
Название ивента participant_answered JSON BODY
Пример
В случае, если ответ участника был последним (5 из 5), сервер пришлет ивент round_results с результатами раунда для перехода на экран результатов.

Participant open chat

Отправляется конкретному участнику, когда он открыл окно чата для получения сообщений. Название ивента participant_open_chat Пример
В ответ сервер отправит ивент chat_history с массивом сообщений:

Chat message

Отправляется всем участникам, когда один из них отправляет сообщение в чат. Название ивента chat_message Пример
В ответ сервер отправит ивент всем участникам new_message с массивом сообщений:

Коды ошибок

Сервер может отправлять ошибки в виде сообщений с типом error, а также закрывать соединения с определенными WebSocket кодами. Вот список возможных кодов и ошибок: