Racelink
Документация · Протокол без SDK

// Документация · Продвинутое

Протокол без SDK

SDK говорит с Racelink небольшим JSON-протоколом поверх WebSocket. Пользуйтесь им напрямую, только когда SDK туда не попасть: сборка другого фреймворка, утилита, тест.

Адрес

ws://127.0.0.1:32123/v2 на компьютере игрока. Подключиться могут только пакеты оверлеев Racelink и страницы с адресов http://localhost и http://127.0.0.1 (Безопасность). Сообщения — JSON.

Что отправляет оверлей

client → Racelink
{ "type": "hello", "apiVersion": 2, "instanceToken": "…" }
{ "type": "subscribe", "topics": ["car", "session"] }
{ "type": "overlay.error", "message": "…", "stack": "…" }
hello
Первое сообщение. instanceToken — токен, который Racelink положил в адрес страницы (#token=…); без него страница не получит ни настроек, ни разрешений. "demo": { "game": "iracing" } просит демо-данные для этого соединения.
subscribe
Нужные блоки данных (topics). Каждый subscribe заменяет предыдущий список.
overlay.error
Сообщает об ошибке страницы; Studio покажет её вам.

Что присылает Racelink

Racelink → client
{ "type": "ready", "apiVersion": 2, "appVersion": "…", "game": "iracing",
  "host": { "editMode": false },
  "instance": { "overlayId": "…", "settings": { … }, "actions": { "TOGGLE_VISIBILITY": 3 } },
  "permissions": { "media": true, "internet": false, "steamMessages": false } }
{ "type": "telemetry", "topic": "car", "sequence": 42, "timestamp": 1730000000000, "data": { … } }
{ "type": "settings", "values": { … } }
{ "type": "host", "host": { "editMode": true } }
{ "type": "action", "action": "TOGGLE_VISIBILITY", "count": 4 }
{ "type": "permissions", "permissions": { … } }
{ "type": "error", "code": "INVALID_MESSAGE", "message": "…" }
  • ready — ответ на hello: игра, настройки экземпляра, счётчики действий и разрешения. Рисуйте после него.
  • telemetry несёт весь блок данных в текущем состоянии. Новый подписчик сразу получает последнее значение каждого блока.
  • settings, host, action и permissions приходят, когда игрок что-то меняет.
  • Коды ошибок: INVALID_MESSAGE, API_VERSION_UNSUPPORTED, INSTANCE_UNKNOWN, DEV_MANIFEST_INVALID.

Каталог запущенного Racelink

GET http://127.0.0.1:32123/v2/schema возвращает все блоки данных с частотой и все поля с типом и играми — тот же каталог, что в справочнике полей, из того Racelink, который стоит у игрока.