2013-03-23 42 views
0

我正在嘗試使用不同的方法通過MQTT將數據傳遞給某些HTML5頁面。Pywebsocket「房間」或「主題」概念

我在Node.js的Socket.IO一起看,它似乎是一個很好的解決方案,因爲Socket.IO有「房間」概念,這是很容易轉換爲MQTT 「主題「

我很好奇,如果pywebsocket有任何這樣的概念,它可以讓我使用多個頁面相同websockethandler不相同的數據發送到所有頁面。

我已經看過pywebsocket谷歌代碼頁與some examples一起,但我一直沒有找到任何信息,這將允許這種行爲。如果有人有關於此的更多信息,我會很高興:)

回答

3

雖然我不能給你任何直接提示將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代理的一個實例連接起來。

我希望這會有所幫助。

+0

謝謝,我一直在研究這些事情,並得出相同的結論。似乎pywebsocket目前沒有「空間」概念。實驗蚊子版本不會真的做我所希望的,因爲我不想運行一個單獨的http服務器。感謝您的廣泛答覆,但希望這可以幫助其他人解決與我相同的問題。 – span 2013-03-31 20:42:42