Я управляю веб-сайтом сканеров общественных служб, который позволяет людям слушать полицию, пожарную службу и т. Д. Он транслируется через Icecast на Ubuntu из бэкэнда, и я запускаю интерфейсный веб-сайт из Joomla на IIS / PHP.
У меня есть скрипт Python на сервере потоковой передачи, который анализирует информацию с дисплея радиостанции сканера, чтобы захватить текущую частоту / разговорную группу и применить ее к названию песни потока. Затем запрос AJAX на интерфейсном веб-сайте запрашивает название песни на сервере icecast каждые 5 секунд, так как это меняется довольно часто.
В последнее время и события в этом районе вызвали огромное количество посетителей на сайт. Постоянные запросы на обновление названия песни на веб-сайте разрушили мое интернет-соединение, поэтому я начал исследовать другие методы и наткнулся на веб-розетки. Насколько я понимаю, вместо того, чтобы клиенты постоянно запрашивали название песни, веб-розетки позволили бы мне продвигаться только после изменений.
Я начал играть с icecast-stack, модулем mpn, который является частью node.js. Хотя это казалось многообещающим, мне трудно понять, как это реализовать. Похоже, что в разработке находится полноценный игрок icecast / html5 / node.js, но он еще не завершен.
Моя вторая мысль будет использовать node.js для создания чата клиент / сервер. Эта концепция имеет смысл, поскольку посетители будут «клиентом» чата, а также самим сервером icecast, отправляющим сообщения на сервер чата. Где я борюсь с этим, так это с моим скриптом Python на сервере Icecast; Как отправить мою переменную в Python на сервер чата node.js?
Если у кого-то есть пример кода, которым можно поделиться, или, возможно, вообще есть другая идея, я был бы очень признателен.
Большое спасибо!
WebSockets для двунаправленного общения, которое вам не нужно. использование отправленные сервером события вместо.
На клиенте вы будете делать что-то вроде этого:
const metaEventSource = new EventSource('/metadata');
metaEventSource.addEventListener('message', (e) => {
console.log(e.data);
});
На стороне сервера доступно много абстракций в зависимости от того, какой стек вы в конечном итоге выберете. Это простой текстовый формат ответа:
event: metadata
data: Your new metadata goes here
Других решений пока нет …