sangoの使い方 - JavaScript WebSocket 編

ブラウザのJavaScriptからsangoを使う方法について説明します。

ブラウザからJavaScriptを使用してsangoを使うには、WebSocketを使用します。

sangoのダッシュボードでMQTT接続情報を開くと「WebSocket接続先」の情報が 記載されています。

WebSocket接続先 : ws://example.shiguredo.jp:8080/mqtt

これをメモしておきましょう。

1. JavaScriptを実装する

pahoから mqttws31.js をダウンロードして、読み込ませておきます。

2. クライアントの実装

Connect部分はPub/Subともに共通です。

他の言語ではClientIDは指定しない場合、ランダムな文字列を生成してくれる ものがほとんどですが、JavaScriptの場合は自分で指定する必要があります。 Math.random() などを使い、ランダムな文字列を生成する関数を用意する ほうが良いかと思います。

Connect

var client; // MQTTのクライアントです
var clientId = "clientid-test"; // ClientIDを指定します。

function connect(){
    var user_name = "example@github";
    var pass = "<password>";
    var wsurl = "ws://example.shiguredo.jp:8080/mqtt";

    // WebSocketURLとClientIDからMQTT Clientを作成します
    client = new Paho.MQTT.Client(wsurl, clientId);

    // connectします
    client.connect({userName: user_name, password: pass, onSuccess:onConnect, onFailure: failConnect});
}

// 接続が失敗したら呼び出されます
function failConnect(e) {
    console.log("connect failed");
    console.log(e);
}

// 接続に成功したら呼び出されます
function onConnect() {
    console.log("onConnect");
}

Subscribe

clientの onMessageArrived にコールバック関数を登録し、 subscribe します。

 // メッセージが到着したら呼び出されるコールバック関数
 function onMessageArrived(message) {
     console.log("onMessageArrived:"+message.payloadString);
 }

function subscribe(){
    // コールバック関数を登録します
    client.onMessageArrived = onMessageArrived;

    var topic = "example@github/a/b";
    // Subscribeします
    client.subscribe(topic);
}

Publish

Paho.MQTT.Message でメッセージを作成し、clientの send メソッドを呼び出します。

function publish(){
    var topic = "example@github/a/b";
    message = new Paho.MQTT.Message("Hello");
    message.destinationName = topic;
    client.send(message);
}

Comments

comments powered by Disqus