80 lines
5.8 KiB
Markdown
80 lines
5.8 KiB
Markdown
# Hockey vMix Agent 1.5.6
|
||
|
||
Windows x64: персональный канал между Hockey Web и локальным vMix.
|
||
|
||
## Установка и обновление
|
||
|
||
1. Завершите работающий Agent через tray → **«Выход»**.
|
||
2. Сохраните существующий `agent_config.json`: в нём идентификатор устройства,
|
||
ключ и адреса подключения.
|
||
3. Для версии ниже 1.5.6 замените `agent.exe` из текущего архива и запустите его.
|
||
В BUILD200 используется тот же проверенный Agent 1.5.6; повторная замена
|
||
уже установленного 1.5.6 не требуется.
|
||
4. Проверьте версию **1.5.6**, связь с сервером и vMix, выбранный матч и назначение.
|
||
|
||
Сброс конфигурации и повторная регистрация при обычном обновлении не нужны.
|
||
|
||
## Адреса
|
||
|
||
Сервер по умолчанию: `http://127.0.0.1:8000`. Для удалённого сервера задайте его
|
||
обычный HTTP/HTTPS-адрес; WebSocket HTTP/HTTPS преобразуется в WS/WSS автоматически.
|
||
Приоритет: `HOCKEY_SERVER_URL`, затем `server_url.txt` рядом с Agent, затем основной
|
||
и резервный адреса из настроек.
|
||
|
||
Локальный vMix API по умолчанию: `http://127.0.0.1:8088/api/`.
|
||
Связь с vMix проверяется отдельно от соединения с Hockey Web.
|
||
|
||
## Mapping и управление
|
||
|
||
В BUILD194 сервер согласует с Agent возможность `mapping_title_batch_v1`.
|
||
Команды группируются по Input, до 500 команд и 48 КиБ на пакет. В vMix они
|
||
выполняются отдельными HTTP-запросами; смена всех полей в одном кадре не гарантируется.
|
||
|
||
Записи одной цели сохраняют порядок, независимые поля обрабатываются ограниченным
|
||
пулом. Для интерактивных команд выделен отдельный обработчик, WebSocket reader
|
||
продолжает принимать управление. Очереди ограничены; смена назначения и разрыв
|
||
соединения отменяют прежнюю работу. Сервер проверяет подтверждение каждой команды.
|
||
Прежние Agents продолжают получать небольшие пакеты.
|
||
|
||
В BUILD198 возможность `vmix_priority_v1` добавляет срочную очередь для команд
|
||
native Countdown и снятия Overlay. Из шести HTTP-мест одно зарезервировано для
|
||
срочных команд; обычные команды и Mapping совместно занимают до пяти.
|
||
Срочная очередь ограничена 64 задачами вместе с выполняющимися. Задача, ожидающая
|
||
занятую цель, не занимает рабочий поток или HTTP-место для независимой команды.
|
||
Команды одной физической цели сохраняют порядок между очередями. Уже начатый
|
||
HTTP-запрос к этой цели завершается прежде следующей команды; таймаут запроса — 3 с.
|
||
Переподключение и смена матча отменяют устаревшую очередь. Ожидающее обновление
|
||
старого Mapping снимается, если для поля принято более новое явное обновление.
|
||
|
||
Показ титра ожидает подтверждения требуемых данных. Срочный приоритет не заменяет
|
||
проверку текста перед IN. Замеры очереди и HTTP передаются с ACK и связываются с
|
||
серверным журналом через `trace_id`; значения полей и ключи подключения в замеры
|
||
не включаются.
|
||
|
||
Структура Inputs/GT-полей отправляется при подключении и изменении схемы.
|
||
Fingerprint зависит от структуры, а не значений полей: обычная смена счёта или
|
||
игрока не создаёт новый Mapping. Пустой Value передаётся для очистки поля.
|
||
Agent также передаёт фактическое состояние Overlay 1–4 из vMix XML.
|
||
|
||
## Диагностика
|
||
|
||
Проверьте отдельно состояние сервера, vMix и назначения устройства. При сбое
|
||
сохраните время, матч и имя проблемного Input/поля. Журнал `agent.log` находится
|
||
рядом с программой; около 2 МБ он ротируется в `agent.log.1`. Общий журнал приложения
|
||
открывается в Hockey Web кнопкой **«Журнал»**.
|
||
|
||
## Сборка
|
||
|
||
Go, Windows x64, без внешних модулей. Из каталога `agent`:
|
||
|
||
```bat
|
||
set GO111MODULE=off
|
||
set GOOS=windows
|
||
set GOARCH=amd64
|
||
set CGO_ENABLED=0
|
||
go build -trimpath -ldflags="-H=windowsgui -s -w" -o agent.exe core.go dispatch.go main_windows.go
|
||
```
|
||
|
||
`main.go` — прежний консольный вход; его не включают в GUI-сборку.
|
||
Локальные проверки диспетчера: `go test core.go dispatch.go dispatch_test.go`.
|