Метод Websocket для обработки метаданных Icecast?

Я управляю веб-сайтом сканеров общественных служб, который позволяет людям слушать полицию, пожарную службу и т. Д. Он транслируется через 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?

Если у кого-то есть пример кода, которым можно поделиться, или, возможно, вообще есть другая идея, я был бы очень признателен.

Большое спасибо!

0

Решение

WebSockets для двунаправленного общения, которое вам не нужно. использование отправленные сервером события вместо.

На клиенте вы будете делать что-то вроде этого:

const metaEventSource = new EventSource('/metadata');
metaEventSource.addEventListener('message', (e) => {
console.log(e.data);
});

На стороне сервера доступно много абстракций в зависимости от того, какой стек вы в конечном итоге выберете. Это простой текстовый формат ответа:

event: metadata
data: Your new metadata goes here
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]