0

MQTT を介して一部の HTML5 ページにデータを配信するさまざまな方法を試しています。

Node.jsとSocket.IOを一緒に調べましたが、Socket.IOには MQTT の「トピック」に簡単に変換できる「部屋」の概念があるため、これは優れたソリューションのように思えます。

pywebsocketに、同じデータをすべてのページに送信せずに複数のページに同じ websockethandler を使用できるような概念があるかどうか興味があります。

pywebsocketのGoogle コード ページといくつかの例を見てきましたが、この種の動作を許可する情報を見つけることができませんでした。誰かがこれについてもっと情報を持っているなら、私はとても幸せです:)

4

1 に答える 1

3

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 ブローカーのインスタンスにブリッジするために、私の友人によって作成されました。

これが役立つことを願っています。

于 2013-03-28T13:43:42.117 に答える