虽然我无法直接提示您将 Socket.IO 的房间概念转换为 MQTT,但您可能想看看Mosquitto.js,它允许您通过 Websockets 从浏览器轻松建立 MQTT 连接,其行为非常类似于真实网络套接字。使用这种方法,每个打开的页面都会建立到 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);
由于尚未在任何 MQTT 代理中真正实现对 Websocket 连接的本机支持,因此服务器端需要一些软件将 Websocket 连接桥接到 MQTT 代理。
Mosquitto.js 的开发人员建议为 Lighttpd 网络服务器使用自定义 mod_websocket 模块来完成此任务。但是,作为替代方案,您可能想尝试WSS,它将任何 Websocket 连接转换为任意其他 TCP 端口,并且开销最小
对于上面的示例,您可以将 mqttSocket 连接到 WSS 实例正在侦听传入连接的地址和端口。然后将 WSS 配置为将传入连接转发到您选择的 MQTT 代理。
免责声明:WSS 由我的一个朋友编写,专门用于将 Mosquitto.js 连接连接到 Mosquitto MQTT 代理的实例。
我希望这有帮助。