Управление запросами
В этом разделе мы покажем базовый пример того, как можно управлять запросом сессии от начала до конца.
Допустим, у нас есть набор версии приложения с Seat, четыре сокеты, и autodeploy. Вам следует обратиться к документации по сессиям, если вы не знакомы с этими терминами.
Создание исходного запроса
Наш матчмейкер определил, что игроки с IP-адресами 1.2.3.4 и 5.6.7.8 хотят играть вместе. Матчмейкер отправит запрос на создание для них сессии. Полную документацию API здесь.
В настоящее время у нас нет развертывания для размещения нашего запроса сессии, поэтому Arbitrium автоматически создаст его для наших двух игроков.
Не желательно повторно запрашивать API, чтобы проверить готовность сессии. Чтобы избежать этого, вы можете использовать webhook, что является рекомендуемой практикой.
{
"app_name": "demo",
"version_name": "v1",
"ip_list": ["1.2.3.4", "5.6.7.8"],
"continent": "North America",
"webhook_url": "https://my-webhook.com/callback"
}Обработка статусов сессии
Вы получите одно и то же тело независимо от того, используете ли вы webhook или выполняете GET запросы. Тело сессии GET содержит различные статусы и ключи, но вам нужно управлять только ключом статуса. Три статуса, которые вам следует обрабатывать, это Готов, Ошибка, и Необрабатываемо.
Ошибка и Необрабатываемо
Если ваша сессия в одном из этих двух статусов, это означает, что мы не смогли связать вашу сессию с готовым развертыванием. В результате у вас не будет URL для подключения игроков. Важно обрабатывать эти статусы на вашем бэкенде. Это может произойти по разным причинам.
Вы не активировали
autodeployопцию, поэтому нет доступных развертываний или они все заполнены.Мы не смогли развернуть вашу версию приложения из‑за некорректной конфигурации.
Готов
Когда статус вашей сессии Готов, это означает, что она готова для подключения ваших игроков к развертыванию. Вы можете взять URL подключения в части портов развертывания тела GET .
В теле есть дополнительная информация, но мы удалили то, что не относится к примеру, для ясности.
Инициализация, Поиск, Ожидание
Это ожидающие статусы, что означает, что они появляются, когда мы в данный момент анализируем, какое развертывание должно разместить вашу сессию, или когда мы развертываем новое развертывание. Вам не нужно специально обрабатывать эти статусы.
Удаление сессии
Когда вы определяете, что нужно удалить сессию, либо потому что вы разрываете соединение между сервером и вашими игроками и/или матч завершён, вам нужно отправить нам запрос на удаление.
Вы можете просто удалить сессию с помощью DELETE запрос к /v1/session/{SESSION_ID}. Ваша сессия перейдёт в состояние Завершение перед тем, как она станет недоступна.
Как было упомянуто ранее, сессии не являются физическими соединениями, следовательно, вам нужно управлять физическим подключением и отключением ваших игроков. Эти действия должны быть синхронизированы с созданием и удалением сессий. Если вы не удаляете сессии, это приведёт к ложному использованию сокетов сессий, и вы будете потреблять гораздо больше ресурсов, чем необходимо. Важно отметить, что Edgegap не в состоянии определить, когда ваши игроки должны быть подключены к серверу, поэтому вы должны управлять этим на своём бэкенде.
Базовая фильтрация
Вы можете фильтровать сессии, чтобы обеспечить конкретное расположение, такое как страны, континента, или города. Вы также можете указать широту и долготу, и развертывание будет выполнено максимально близко к этой географической точке. Полный список фильтров можно увидеть здесь. Это может быть полезно использовать в вашей системе матчмейкинга.
В следующем разделе мы покажем, как можно выполнить более сложную фильтрацию с помощью Селекторов и тегов на ваших развертываниях.
Поток вызовов вебхука сессии
Когда вы создаёте сессию, вы можете указать URL webhook, чтобы получать обновления о статусе сессии. Это более эффективный способ управления сессиями, чем опрос API.
Следующая диаграмма последовательности иллюстрирует поток вызовов вебхука сессии.

Последнее обновление
Это было полезно?

