Socket.IO のルームの概念を MQTT に変換する直接的なヒントを提供することはできませんが、ブラウザから Websocket を介して MQTT 接続を簡単に確立できるMosquitto.jsを参照してください。ウェブソケット。このアプローチでは、開いているすべてのページが 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 ブローカーにブリッジするサーバー側で必要なソフトウェアが少しあります。
Mosquitto.js の開発者は、このタスクのために Lighttpd Web サーバー用のカスタム mod_websocket モジュールを使用することを推奨しています。ただし、代わりに、最小限のオーバーヘッドで Websocket 接続を任意の他の TCP ポートに変換するWSSを試してみることをお勧めします。
上記の例では、WSS のインスタンスが着信接続をリッスンしているアドレスとポートに mqttSocket を接続します。次に、選択した MQTT ブローカーに受信接続を転送するように WSS を構成します。
免責事項: WSS は、特に Mosquitto.js 接続を Mosquitto MQTT ブローカーのインスタンスにブリッジするために、私の友人によって作成されました。
これが役立つことを願っています。