Описание
Сервис получает данные по киберспортивным матчам CS:GO от провайдера, структурирует, очищает от лишнего и отправляет всем активным вебсокет клиентам, если призошли изменения с данными.
При первом подключении клиента отправляет актуальные данные Line и Upcoming.
Параметры хранит в переменных окружения. Описание в разделе "ENV"
Сборка бинарника
go build -o websocked ./cmd/*.go
ENV
Переменные окружения берутся из файла .env автоматически при запуске программы, если они не были определены ранее в ENV среды выполнения.
В данный момент в .env прописаны следующие значения:
$ tickers timeout for next request to provider
LIVE_TIMEOUT=3
UPCOMING_TIMEOUT=20
$ provider request URLs
LIVE_URL=https://.....
UPCOMING_URL=https://.....
$ field to marker json which are messaged to websocket
LIVE_JSON=live
UPCOMING_JSON=upcoming
$ websocket port
WS_ADDR=:8081
Что получаем а выходе
Сервер отправляет в вебсокет соединение структуры двух типов:
- Live - матчи, которые идут в данный момент в лайве. Тело сообщения содержит поле {"parameter":"live",......}
- Upcoming - предстоящие матчи. Тело сообщения содержит поле {"parameter":"upcoming",......}
Примеры ответов:
{"parameter":"live","body":[{"game_id":352722396,"game_start":1643463540, "game_oc_list":[{"oc_group_name":"1x2","oc_name":"Team Fryzex",...}],[{}],...}]}
{"parameter":"upcoming","body":[{"game_id":351424884,"game_start":1643472000, "game_oc_list":[{"oc_group_name":"1x2","oc_name":"Conquer",...}],[{}],...}]}
Проверка работы без внешних зависимостей
Можно использовать либо плагин для Chrome - Simple WebSocket Client, либо Postman.
По умолчанию доступ открыт на ws://localhost:8081/ws