2017-08-07 20 views
0

Eclipse Paho - Mqtt javascriptライブラリを使用しています。Eclipse Paho - MQTT Javascript - 外部からのアクセス方法onMessageArrived

外部関数からonMessageArrivedにアクセスしようとすると:

mqttConnect(){ 
    var client = new Paho.MQTT.Client("wss://test.mqtt.address", "myClientId"); 
    this.connectionInfo = client; 
    client.onConnectionLost = onConnectionLost; 
    client.onMessageArrived = onMessageArrived; 
    client.connect({onSuccess:onConnect}); 

    function onConnect() { 
     client.subscribe("some/path/to/subscribe/"); 
    } 
    function onConnectionLost(responseObject) { 
     if (responseObject.errorCode !== 0) { 
      console.log("onConnectionLost:"+responseObject.errorMessage); 
     } 
    } 
    function onMessageArrived(message) { 
     console.log("onMessageArrived: "+message.payloadString); 
     return message.payloadString; //this does not work of course. 
    } 
    } 

のように、外部からのメッセージにアクセスしようとすると:たぶん、いくつかのグローバル変数を登録し、this.global = message.payloadStringようにそこにそれを置く

_constract(){ 
    var message = mqttConnect(); 
    console.log(message); 

} 

答えて

0

グローバルペイロードにメッセージペイロードを格納すると、後で再度アクセスできるようになります。または、onMessageArrived()コールバック内で必要な処理をすべて行うことができます。

onMessageArrived()は非同期であるため、このようにする必要はありません。また、そのトピックのメッセージレートに応じて何度も呼び出すこともできます。

EDIT(例):

var client; 
var lastMsg; 

function connect(){ 
    client = new Paho.MQTT.Client("wss://test.mqtt.address", "myClientId"); 

    client.onConnectionLost = onConnectionLost; 
    client.onMessageArrived = onMessageArrived; 
    client.connect({onSuccess:onConnect}); 
} 

function onConnect() { 
    client.subscribe("some/path/to/subscribe/"); 
} 

function onConnectionLost(responseObject) { 
    if (responseObject.errorCode !== 0) { 
    console.log("onConnectionLost:"+responseObject.errorMessage); 
    } 
} 

function onMessageArrived(message) { 
    console.log("onMessageArrived: "+message.payloadString); 
    lastMsg = message.payloadString; 
} 

connect(); 

setInterval(function() { 
    document.findElementById("foo").innerHTML = lastMsg; 
}, 5000); 
+0

は、あなたの答えをいただき、ありがとうございます。あなたは私に例を挙げてくれますか? –

+0

@ mr_e30の例が追加されました – hardillb

関連する問題