Каждый пользователь должен быть авторизирован для получения уникального токена.Серверы не пропустят запрос, если токена нет или он неверный.Также в токен вшита информация об игре и игроке.
Регистрация нового пользователя в системе с указанием уникального email и пароля. После успешной регистрации возвращаются токены.
https://ascenmmo.com/api/v1/devToolsClient/signUp
POST
Content-Type: application/json
{ "id": 1, "jsonrpc": "2.0", "params": { "client": { "additional": {}, "email": "string", "gameID": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "nickname": "string", "password": "string" } } }
Поле 'email' должно быть уникальным. Если email используется повторно, возвращается ошибка. Дополнительную информацию можно передавать в формате JSON в поле 'additional'.
{ "id": 1, "jsonrpc": "2.0", "result": { "refresh": "string", "token": "string" } }
При успешной регистрации возвращаются два поля: 'token' и 'refresh'. Эти токены следует сохранить для последующего использования в заголовках запросов.
Авторизация пользователя с использованием email и пароля. После успешной авторизации возвращаются токены.
https://ascenmmo.com/api/v1/devToolsClient/signIn
POST
Content-Type: application/json
{ "id": 1, "jsonrpc": "2.0", "params": { "client": { "additional": {}, "email": "string", "gameID": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "nickname": "string", "password": "string" } } }
Передайте email и пароль для авторизации. В случае успеха вернутся токены.
{ "id": 1, "jsonrpc": "2.0", "result": { "refresh": "string", "token": "string" } }
Возвращаются 'token' и 'refresh', которые необходимо использовать для дальнейших запросов.
Данный метод используется для обновления токенов доступа и обновления. Необходимо передать текущие токены в заголовках запроса. В теле запроса нет дополнительных параметров.
Запрос на обновление токенов доступа и обновления. Требуется токен и refresh токен в заголовках.
/api/v1/devToolsClient/refreshToken
POST
Token: ваш токен RefreshToken: ваш refresh токен
{ "id": 1, "jsonrpc": "2.0", "params": {} }
В теле запроса нет дополнительных параметров, просто передайте пустой объект в 'params'.
{ "id": 1, "jsonrpc": "2.0", "result": { "newRefresh": "string", "newToken": "string" } }
В ответе возвращаются новые токены: 'newRefresh' и 'newToken'. Эти токены следует сохранить и использовать для дальнейших запросов.
Этот метод используется для получения информации о клиенте на основе идентификатора игры (gameID). Запрос требует наличие токена в заголовке для авторизации. В ответе возвращаются данные клиента, такие как email, nickname, gameID, а также дополнительная информация.
Запрос на получение информации о клиенте по его gameID. Запрос должен быть авторизован с помощью токена.
/api/v1/devToolsClient/getClient
POST
Token: ваш токен
{ "id": 1, "jsonrpc": "2.0", "params": { "gameID": "3fa85f64-5717-4562-b3fc-2c963f66afa6" } }
В теле запроса передается идентификатор игры (gameID). Необходимо указать токен в заголовке для авторизации запроса.
{ "id": 1, "jsonrpc": "2.0", "result": { "client": { "additional": {}, "email": "string", "gameID": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "nickname": "string", } } }
В ответе возвращается объект клиента, который содержит email, gameID, nickname и дополнительную информацию в поле 'additional'.
Данный метод используется для обновления информации о клиенте. Необходимо передать токен в заголовке запроса и объект клиента в теле запроса. Объект клиента может включать новый пароль, если он требуется.
Запрос на обновление данных клиента. Требуется токен в заголовке и объект клиента в теле.
/api/v1/devToolsClient/updateClient
POST
Token: ваш токен
{ "id": 1, "jsonrpc": "2.0", "params": { "client": { "additional": {}, "email": "string", "nickname": "string", "password": "string", "newPassword": "string" } } }
В теле запроса передается объект клиента, который включает поля: - `additional`: дополнительная информация (может быть пустым объектом) - `email`: новый email клиента - `nickname`: новый nickname клиента - `password`: текущий пароль клиента (для проверки) - `newPassword`: новый пароль клиента (если требуется изменить).
{ "id": 1, "jsonrpc": "2.0", "result": {} }
При успешном обновлении возвращается объект, содержащий поля: - `id`: идентификатор запроса, который совпадает с тем, что был отправлен. - `jsonrpc`: версия JSON-RPC, которая также совпадает с той, что была отправлена. - `result`: пустой объект, подтверждающий успешное выполнение запроса. Этот объект указывает на то, что данные клиента были успешно обновлены.
Данный метод используется для получения сохранений игры. Необходимо передать токен в заголовке запроса и пустое тело запроса в формате JSON-RPC.
Запрос на получение сохранений игры. Требуется токен в заголовке и пустое тело запроса.
/api/v1/devToolsClient/getGameSaves
POST
Token: ваш токен
{ "id": 1, "jsonrpc": "2.0", "params": {} }
В теле запроса передается пустой объект `params` в формате JSON-RPC: - `id`: идентификатор запроса - `jsonrpc`: версия JSON-RPC - `params`: пустой объект
{ "id": 1, "jsonrpc": "2.0", "result": { "gameSaves": { "saves": {} } } }
В случае успешного выполнения возвращается объект с полями: - `id`: идентификатор запроса, совпадающий с отправленным - `jsonrpc`: версия JSON-RPC - `result`: объект, содержащий сохранения игры - `gameSaves`: объект с данными сохранений
Данный метод используется для сохранения данных игры. Необходимо передать токен в заголовке запроса и объект с сохранениями в теле запроса.
Запрос на сохранение данных игры. Требуется токен в заголовке и объект с сохранениями в теле запроса.
/api/v1/devToolsClient/setGameSaves
POST
Token: ваш токен
{ "id": 1, "jsonrpc": "2.0", "params": { "gameSaves": { "saves": { "FirstSave": {"location": "loc1", "health": 100} } } } }
В теле запроса передается объект `gameSaves`, который включает: - `saves`: объект с данными сохранений игры. Пример: - `FirstSave`: содержит сохранение с полями: - `location`: местоположение сохранения - `health`: состояние здоровья
{ "id": 1, "jsonrpc": "2.0", "result": {} }
При успешном выполнении запроса возвращается пустой объект `result`, указывающий на успешное сохранение данных.
Данный метод используется для удаления данных сохранений игры. Необходимо передать токен в заголовке запроса и пустое тело запроса в формате JSON-RPC.
Запрос на удаление сохранений игры. Требуется токен в заголовке и пустое тело запроса.
/api/v1/devToolsClient/deleteGameSaves
POST
Token: ваш токен
{ "id": 1, "jsonrpc": "2.0", "params": {} }
В теле запроса передается пустой объект `params` в формате JSON-RPC: - `id`: идентификатор запроса - `jsonrpc`: версия JSON-RPC - `params`: пустой объект
{ "id": 1, "jsonrpc": "2.0", "result": {} }
При успешном выполнении запроса возвращается пустой объект `result`, который подтверждает, что сохранения были удалены.
Игра с таким ID не найдена. Проверьте введенный идентификатор игры и попробуйте снова.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "error game not found" } }
Клиент с таким именем уже существует. Пожалуйста, используйте другое имя.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "error creating client" } }
Клиент с таким идентификатором не найден. Проверьте правильность данных для входа и повторите попытку.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "error client not found" } }
Этот метод используется для создания новой комнаты в игре. Запрос требует наличие токена в заголовке для авторизации. В ответе возвращается новый токен, который может быть использован для последующих запросов.
Запрос на создание новой комнаты для игры. Запрос должен быть авторизован с помощью токена.
/api/v1/devToolsConnections/createRoom
POST
Token: ваш токен
{ "id": 1, "jsonrpc": "2.0", "params": { "name": "string" } }
В теле запроса передается имя комнаты (name). Необходимо указать токен в заголовке для авторизации запроса.
{ "id": 1, "jsonrpc": "2.0", "result": { "newToken": "string" } }
В ответе возвращается новый токен, который может быть использован для последующих запросов.
Этот метод используется для получения информации о комнате текущего пользователя. Запрос требует наличие токена в заголовке для авторизации. В ответе возвращаются данные комнаты, включая информацию о соединениях, времени создания, серверах и другие параметры.
Запрос на получение информации о комнате текущего пользователя. Запрос должен быть авторизован с помощью токена.
/api/v1/devToolsConnections/getMyRoom
POST
Token: ваш токен
{ "id": 1, "jsonrpc": "2.0", "params": {} }
Тело запроса пустое, так как данные извлекаются для текущего авторизованного пользователя. Необходимо указать токен в заголовке для авторизации запроса.
{ "id": 1, "jsonrpc": "2.0", "result": { "connections": [ "3fa85f64-5717-4562-b3fc-2c963f66afa6" ], "created_at": 0, "creator_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "gameID": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "name": "string", "servers": [ "3fa85f64-5717-4562-b3fc-2c963f66afa6" ] } }
В ответе возвращаются данные комнаты, включая идентификаторы, имя, информацию о соединениях, времени создания и серверах.
Этот метод используется для получения информации о всех комнатах в системе. Запрос требует наличие токена в заголовке для авторизации. В ответе возвращается список всех доступных комнат с их данными.
Запрос на получение информации о всех комнатах в системе. Запрос должен быть авторизован с помощью токена.
/api/v1/devToolsConnections/getRoomsAll
POST
Token: ваш токен
{ "id": 1, "jsonrpc": "2.0", "params": {} }
Тело запроса пустое, так как данные извлекаются без необходимости указания дополнительных параметров. Необходимо указать токен в заголовке для авторизации запроса.
{ "id": 1, "jsonrpc": "2.0", "result": { "rooms": [ { "connections": [ "3fa85f64-5717-4562-b3fc-2c963f66afa6" ], "createdAt": 0, "creatorID": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "existsServers": [ "3fa85f64-5717-4562-b3fc-2c963f66afa6" ], "gameID": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "isExists": true, "name": "string", "roomCode": "string", "servers": [ "3fa85f64-5717-4562-b3fc-2c963f66afa6" ] } ] } }
В ответе возвращается массив объектов, каждый из которых представляет комнату. Поля комнаты включают идентификаторы, имя, код комнаты (roomCode), информацию о соединениях, серверах и статусе существования.
Этот метод используется для присоединения к комнате на основе ее идентификатора. Запрос требует наличие токена в заголовке для авторизации. В ответе возвращается новый токен, содержащий информацию о комнате.
Запрос на присоединение к комнате по ее идентификатору. Запрос должен быть авторизован с помощью токена.
/api/v1/devToolsConnections/joinRoomByID
POST
Token: ваш токен
{ "id": 1, "jsonrpc": "2.0", "params": { "roomID": "3fa85f64-5717-4562-b3fc-2c963f66afa6" } }
В теле запроса передается идентификатор комнаты (roomID). Необходимо указать токен в заголовке для авторизации запроса.
{ "id": 1, "jsonrpc": "2.0", "result": { "newToken": "string" } }
В ответе возвращается новый токен, который содержит информацию о комнате и подключенном клиенте.
Этот метод используется для присоединения к комнате на основе ее кода. Запрос требует наличие токена в заголовке для авторизации. В ответе возвращается новый токен, содержащий информацию о комнате.
Запрос на присоединение к комнате по ее уникальному коду. Запрос должен быть авторизован с помощью токена.
/api/v1/devToolsConnections/joinRoomByRoomCode
POST
Token: ваш токен
{ "id": 1, "jsonrpc": "2.0", "params": { "roomCode": "string" } }
В теле запроса передается уникальный код комнаты (roomCode). Необходимо указать токен в заголовке для авторизации запроса.
{ "id": 1, "jsonrpc": "2.0", "result": { "newToken": "string" } }
В ответе возвращается новый токен, который содержит информацию о комнате и подключенном клиенте.
Этот метод используется для удаления комнаты по ее идентификатору. Удаление может быть выполнено только создателем комнаты. Запрос требует наличие токена в заголовке для авторизации.
Запрос на удаление комнаты по ее идентификатору. Удаление доступно только для создателя комнаты и требует авторизации с помощью токена.
/api/v1/devToolsConnections/removeRoomByID
POST
Token: ваш токен
{ "id": 1, "jsonrpc": "2.0", "params": { "roomID": "3fa85f64-5717-4562-b3fc-2c963f66afa6" } }
В теле запроса передается идентификатор комнаты (roomID), которую необходимо удалить. Необходимо указать токен в заголовке для авторизации запроса.
{ "id": 1, "jsonrpc": "2.0", "result": {} }
В ответе не возвращаются данные, что подтверждает успешное выполнение операции удаления.
Этот метод используется для выхода из указанной комнаты. Запрос требует наличие токена в заголовке для авторизации.
Запрос на выход из комнаты по ее идентификатору. Запрос должен быть авторизован с помощью токена.
/api/v1/devToolsConnections/leaveRoom
POST
Token: ваш токен
{ "id": 1, "jsonrpc": "2.0", "params": { "roomID": "3fa85f64-5717-4562-b3fc-2c963f66afa6" } }
В теле запроса передается идентификатор комнаты (roomID), которую необходимо покинуть. Необходимо указать токен в заголовке для авторизации запроса.
{ "id": 1, "jsonrpc": "2.0", "result": {} }
В ответе возвращается пустой объект, подтверждающий успешный выход из комнаты.
Этот метод используется для получения адресов подключения пользователей к серверам после создания комнаты. Сервер распределяет пользователей по серверам и возвращает адреса подключения. Запрос не требует дополнительных параметров, но требует наличие токена в заголовке для авторизации.
Запрос на получение адресов подключения к серверам, куда будут распределены пользователи созданной комнаты. Этот метод аналогичен балансировке нагрузки между серверами.
/api/v1/devToolsConnections/getRoomsConnectionUrls
POST
Token: ваш токен
{ "id": 1, "jsonrpc": "2.0", "params": {} }
В теле запроса не требуется передавать параметры, но необходимо указать токен в заголовке для авторизации.
{ "id": 1, "jsonrpc": "2.0", "result": { "connectionsServer": [ { "address": "string", "connectionPort": "string", "fullURL": "string", "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "isExists": true, "path": "string", "serverType": "string" } ] } }
В ответе возвращается массив объектов `connectionsServer`. Каждый объект содержит: - `address`: адрес подключения - `connectionPort`: порт подключения - `fullURL`: полный URL подключения - `id`: уникальный идентификатор сервера - `isExists`: статус доступности сервера - `path`: путь подключения - `serverType`: тип сервера (udp, tcp, websocket).
Токен больше не активен. Пожалуйста, обновите токен через ручку /api/v1/devToolsClient/refreshToken или обратитесь к разделу 'Клиенты' для инструкций.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "token is expired by 215h25m2s" } }
Игра с указанным ID не найдена. Убедитесь, что вы ввели правильный gameID, и повторите попытку.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "error game not found" } }
Для создания комнаты нет активных серверов. Пожалуйста, активируйте нужные серверы в админке и повторите попытку.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "error creating room all servers off" } }
Запрашиваемая комната не существует. Возможно, она была удалена или не была создана. Проверьте корректность ID комнаты и повторите запрос.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "room not found" } }
Вы не имеете доступа к этой комнате. Убедитесь, что вы являетесь участником комнаты, чтобы получить к ней доступ.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "access denied" } }
Этот сервис предназначен для передачи небольших данных в режиме реального времени. Если ваши клиенты хотят получать данные максимально быстро, а скорость важнее, чем гарантированная доставка, то этот сервис подходит идеально. UDP — это очень быстрое решение, однако, есть недостатки: некоторые пакеты могут быть потеряны или доставлены не по порядку.
Для подключения к сервису необходимо знать IP-адрес и порт.Максимальное количество сообщений в секунду — 200. Так же нужно дождаться от сервреа ответа в виде id вашего клиента, UserID в ответе является подтверждением что подключение аутентифицированное.Пример команды подключения
udp://ascenmmo.com:4500
udp write
eyJhbGciOiJIUz11NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MzA3NjA4ODYsIkluZm8iOnsiZ2FtZV9pZCI61jJhZDIyNDNhLThhN2UtMzkzMC1iNjEzLTg5YzY2NDk2YWFjZCIsInJvb21faWQiOiIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiLCJ1c2VyX2lkIjoiN2RkZmNiNzEtOWQ3OC0zMTczLWExNGQtNDVjZTc1ODIyNmM3IiwidHRsIjo5MDAwMDAwMDAwMDB9fQ.wmq1VH88zlws_tSAdvJjfXcdcoaxL8vT8W9gsRZrw_o$_$j
Нужно отправить string без всякой обвертки несколько раз пока от сервера не вернется userID. Сервер должен понять что ваше подключение является валидным, иначе вы не являетесь подключенным пользователем.
3fa85f64-5717-4562-b3fc-2c963f66afa6
Запустите Этап чтения. Прежде чем переходить к этапу отправки вам должен вернуться userID это является подтверждением что ваше соединение аутентифицированное
Используйте тот же канал подключения, не нужно создавать новый. Канал подключения на этапе чтения и отправки должен быть один.Команда чтения
udp://ascenmmo.com:4500
udp read
Пренадлежит этапу отправки, при поралельном чтении не требует отправки данных'
Тут мы должны слушать ответ
data1 data2 data2 или dat data2 d$#3 dt9 или data
ответ может содержать как одно сообщение так и несколько, udp не гарантирует целосность сообщений и их порядок. Сервер работает по схеме рассылки при получении одного сообщения от ПервогоКлиента от дублирует Второму и Третьему сообщение.
Используйте тот же канал подключения, не нужно создавать новый. Канал подключения на этапе чтения и отправки должен быть один.Так как в первом этапе вы аутентифицировались на сервере вы можете отослать пакетПример команды отправки
udp://ascenmmo.com:4500
udp write
клиент 1 отправил сообщение 101, или он отправил json {"name": "MyUser1"}
сервер работате только с даными []byte. Массив байт распределяется по всем клиентам
клиент 2 отправил сообщение 15, или он отправил json {"name": "MyUser2"} клиент 3 отправил сообщение 53, или он отправил json {"name": "MyUser3"}
ответ может содержать как одно сообщение так и несколько, udp не гарантирует целосность сообщений и их порядок. Если сообщения идут нечитаемые, поиграйтесь с времеными рамками отправителя сообщений. Сервер не валидирует сообщения и не дробит их, а рассылает всем как есть.
Этот WebSocket-сервис разработан специально для многопользовательских онлайн игр, обеспечивая передачу данных в режиме реального времени между клиентами. С его помощью можно быстро и эффективно обмениваться игровыми данными, что особенно важно в условиях, где скорость имеет приоритет над надёжностью доставки сообщений. WebSocket поддерживает двустороннюю связь между клиентом и сервером, что делает его отличным выбором для игровых клиентов. Однако следует учитывать, что возможны потери пакетов или их получение в неправильном порядке.
Для подключения к игровому WebSocket-сервису вам нужно знать URL и использовать токен для аутентификации. Максимальное количество запросов в секунду — 200.Пример команды для подключения и отправки игрового сообщения через WebSocket:
ws://127.0.0.1:4240/api/ws/connect
ws
Token: ваш токен
{ "data": "данные для отправки" }
Тело запроса должно содержать игровую информацию, отправляемую другим игрокам. Токен для аутентификации передается в заголовке.
{ "data": "данные от других клиентов" }
Ответ содержит данные, полученные от других игровых клиентов, подключённых к той же игровой комнате.
Этот сервис предназначен для взаимодействия между игровыми клиентами и сервером через TCP соединение. С его помощью клиенты могут отправлять сообщения, получать новые сообщения и удалять пользователей. Сервис поддерживает до **10 запросов в секунду** и идеально подходит для игровых приложений, где требуется высокая скорость взаимодействия и поддержка лонгпулинга для получения новых сообщений.
Для отправки сообщения от клиента на сервер используйте следующую ручку. Необходимо передать токен в заголовке запроса.
/api/v1/rest/gameConnections/setSendMessage
POST
Token: ваш токен
{ "id": 1, "jsonrpc": "2.0", "params": { "message": { "data": "ваши данные", "server": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "token": "ваш токен" } } }
Тело запроса должно содержать данные сообщения, идентификатор сервера и токен для аутентификации.
{ "id": 1, "jsonrpc": "2.0", "result": {} }
Ответ указывает на успешное выполнение операции.
Для получения новых сообщений с сервера используйте следующую ручку. Можно использовать лонгпулинг.
/api/v1/rest/gameConnections/getMessage
POST
Token: ваш токен
{ "id": 1, "jsonrpc": "2.0", "params": {} }
Тело запроса не требует параметров, необходимо только указать токен в заголовке.
{ "id": 1, "jsonrpc": "2.0", "result": { "messages": { "dataArray": [ "новое сообщение" ] } } }
Ответ содержит массив новых сообщений от сервера.
Для удаления пользователя из игрового сервера используйте следующую ручку.
/api/v1/rest/gameConnections/removeUser
POST
Token: ваш токен
{ "id": 1, "jsonrpc": "2.0", "params": { "userID": "3fa85f64-5717-4562-b3fc-2c963f66afa6" } }
Тело запроса должно содержать уникальный идентификатор пользователя, которого необходимо удалить.
{ "id": 1, "jsonrpc": "2.0", "result": {} }
Ответ указывает на успешное выполнение операции.
Ваш токен больше не действителен. Пожалуйста, обновите его через /api/v1/devToolsClient/refreshToken или обратитесь к разделу 'Клиенты' для инструкций.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "token is expired by 215h25m2s" } }
Система не обнаружила указанного пользователя. Убедитесь, что вы ввели правильные данные и попробуйте снова.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "user not found" } }
Система не обнаружила запрашиваемую комнату. Проверьте идентификатор комнаты и попробуйте снова.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "room not found" } }
Попытка создать комнату, которая уже есть в системе. Проверьте настройки и повторите запрос.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "room is exists" } }
Введенное значение для комнаты недопустимо. Проверьте данные и попробуйте снова.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "room bad value" } }
Отправлено слишком много запросов. Подождите некоторое время и попробуйте снова.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "too many connection", "message": "too many requests" } }
Не удалось найти указанный сервер уведомлений. Проверьте настройки сервера и повторите попытку.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "err notify server not found" } }
Указанный сервер уведомлений недействителен. Проверьте его конфигурацию и попробуйте снова.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "err notify server not valid" } }
Произошла ошибка при обработке данных пользователя в конфигурации игры. Проверьте данные и попробуйте снова.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "err game config marshal user data" } }
Система не обнаружила результаты для указанной игры. Убедитесь, что игра завершена, и повторите запрос.
{ "id": 1, "jsonrpc": "2.0", "error": { "message": "game results not found" } }