Протокол, а не бібліотека
Стан радіо роздається через Socket.io, аудіо — через HTTP з токенами. Клієнт можна написати будь-якою мовою, не лише на React.
Документація сервера і опис реалізації клієнта. Усі слухачі чують той самий трек на тій самій секунді.
Хочете написати свій клієнт. Почніть зі «Свій клієнт за 15 хвилин» — наскрізний шлях від підключення до звуку. Потім «Свій адмінський клієнт», якщо потрібне керування ефіром. Далі Довідник REST і Події Socket.io.
Хочете підняти власне радіо. Дивіться Запуск власного сервера: мінімальна конфігурація не потребує ні хмарного сховища, ні бази даних.
Читаєте код. Розділ «Протокол» пояснює рішення, які з коду не видно: токени і доступ, режими програвання, формат повідомлень.
Таблиці ендпоінтів, подій і привілеїв генеруються з коду сервера скриптом docs/scripts/extract-api.mjs, а не пишуться руками. Він читає декларативні охоронці роутів і назви сокетних подій просто з вихідних файлів.
cd docs && npm run extractТой самий скрипт із прапорцем --check варто запускати перед комітом: він падає, якщо згенероване розійшлося із закоміченим, і одразу показує, які ендпоінти чи події лишилися невідображеними.
Код проєкту відкритий і лежить на GitHub: github.com/koropkaras777/radio. Issues і pull request'и вітаються.
TC5rLcwx8fuixAygXxvFFTM1q46i6XCzcS, Ethereum (ERC20) 0x6D7A457F7892AF9B316a3262eFDc2056C3f435ef, Solana 2dLfnrjUCJsfTEQyaq1t3WupJPyfckHBWvcUsvxxFjUv