我运行一个公共服务扫描仪网站,允许人们听警察,开火等。它从后端通过Ubuntu上的Icecast流式传输,我在IIS / PHP上运行Joomla的前端网站
我在流媒体服务器上有一个python脚本,用于解析来自扫描仪无线电显示器的信息,以获取当前频率/通话组并将其应用于流的歌曲标题。然后,前端网站上的AJAX请求每5秒向icecast服务器查询一次歌曲标题,因为这种情况经常发生变化。
最近该地区发生的事件导致大量的游客进入该地点。在网站上更新歌曲标题的常量查询破坏了我的互联网连接,所以我开始调查其他方法,并偶然发现了websockets。我的理解是,不是让客户经常请求歌曲标题,而是只允许我在改变时推送。
我开始玩icecast-stack,一个mpn模块,它是node.js的一部分。虽然这似乎很有希望,但我很难掌握如何实现这一点。看来有一个完整的icecast / html5 / node.js播放器正在开发中,但还没有完成。
我的第二个想法是使用node.js来构建聊天客户端/服务器。这个概念是有道理的,因为访客将成为聊天"客户端"以及icecast服务器本身,向聊天服务器发送消息。我在这方面遇到的困难就是我在icecast服务器上的python脚本;如何在python中将我的变量发送到node.js聊天服务器?
如果有人要分享一些示例代码,或者可能有其他想法,我会非常感激。
非常感谢!
答案 0 :(得分:0)
WebSockets用于双向通信,您不需要。请改用server-sent events。
在客户端,您将执行以下操作:
const metaEventSource = new EventSource('/metadata');
metaEventSource.addEventListener('message', (e) => {
console.log(e.data);
});
服务器端,根据您最终选择的堆栈,有许多可用的抽象。这是一种简单的基于文本的响应格式:
event: metadata
data: Your new metadata goes here