雖然我不能給你任何直接提示將Socket.IO的房間概念翻譯成MQTT,但你可能想看看Mosquitto.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券商真正實施還沒有,有在服務器端所需要的軟件一個小PICE橋接所述的WebSocket連接到MQTT代理。
Mosquitto.js的開發者建議爲Lighttpd網絡服務器使用自定義的mod_websocket模塊來執行此任務。然而,作爲一種替代,你可能想嘗試WSS它轉換上面以最小的開銷
任何WebSocket連接到任意其他TCP端口在關於本例中,您將在mqttSocket連接到ADRESS和端口的實例WSS正在監聽傳入的連接。然後將WSS配置爲將傳入連接轉發到您選擇的MQTT代理。
免責聲明:WSS由我的一位朋友撰寫,專門將Mosquitto.js連接與Mosquitto MQTT代理的一個實例連接起來。
我希望這會有所幫助。
謝謝,我一直在研究這些事情,並得出相同的結論。似乎pywebsocket目前沒有「空間」概念。實驗蚊子版本不會真的做我所希望的,因爲我不想運行一個單獨的http服務器。感謝您的廣泛答覆,但希望這可以幫助其他人解決與我相同的問題。 – span 2013-03-31 20:42:42