我正在尝试通过MQTT向某些HTML5页面传递数据的不同方法。
我已经看了Node.js和Socket。IO,这似乎是一个很好的解决方案,因为Socket。IO有一个"房间"概念,可以很容易地转换为MQTT "主题"。
我很好奇如果pywebsocket有任何这样的概念,这将允许我使用相同的websockethandler多个页面,而不发送相同的数据到所有的页面。
我已经看了pywebsocket谷歌代码页连同一些例子,但我还没有能够找到任何信息,将允许这种行为。如果有人有更多关于这方面的信息,我将非常高兴:)
虽然我不能给你任何直接的暗示来翻译插座的房间概念。对于MQTT,您可能想看一下mosquito .js,它允许您通过浏览器中的Websockets轻松地建立MQTT连接,其行为与真正的Websockets非常相似。使用这种方法,每个打开的页面都建立到MQTT代理的唯一连接。因此,您甚至可以根据客户端的某些条件订阅不同的主题。
一个小示例代码:
var mqttSocket = new Mosquitto();
mqttSocket.onconnect = function(rc){
console.log("Connection established");
};
mqttSocket.ondisconnect = function(rc){
console.log("Connection terminated");
};
mqttSocket.onmessage = function(topic, payload, qos){
console.log("Message received " + topic + ":" + payload);
}
mqttSocket.connect("ws://yourserver:8080");
mqttSocket.subscribe('some/topic', 0);
由于对Websocket连接的本地支持尚未在任何MQTT代理中真正实现,因此服务器端需要一小部分软件来桥接Websocket连接到MQTT代理。
mosquito .js的开发人员建议使用Lighttpd web服务器的自定义mod_websocket模块来完成此任务。然而,作为一种替代方案,您可能想尝试WSS,它将任何Websocket连接转换为任意其他TCP端口,开销最小
对于上面的示例,您可以将mqttSocket连接到WSS实例侦听传入连接的地址和端口。然后将WSS配置为将传入的连接转发到您选择的MQTT代理。
免责声明:WSS是由我的一个朋友编写的,专门用于在mosquito .js连接到mosquito . MQTT代理实例的桥接。
我希望这对你有帮助。