handler - MQTT Paho Javascript - Is it possible to define a handlerfunction per subscription? -
i making web application mqtt paho javascript (mqttws31.js).
in onmessagearrived function define message arrived following code:
var topic = message.destinationname; var message = message.payloadstring; var n = topic.lastindexof('/'); var result = topic.substring(n + 1); switch(result){ case "register":{ //registerhandler } break; case "data":{ //datahandler } break; default:{ alert("wrong topic"); } }; is there better way check topic?
is possible define messagearrived function per subscription? way know define messagearrived before client.connect function. , way know subscribe after connection client.subscribe.
it handy define example: client.subscribe("registertopic", registerhandlerfunction);
what can do?
no, client api doesn't provide capability.
you have couple options. either doing; hard code series of if/then/elses or switch/cases. or quite add own wrapper client library provides more generic capability.
for example, following untested code:
var subscriptions = []; function subscribe(topic,callback) { subscriptions.push({topic:topic,cb:callback}); mqttclient.subscribe(topic); } mqttclient.onmessagearrived = function(message) { (var i=0;i<subscriptions.length;i++) { if (message.destinationname == subscriptions[i].topic) { subscriptions[i].cb(message); } } } note, assumes subscribe absolute topics - ie without wildcards. if use wildcards, you'd have regular expression matching rather == test code uses.
Comments
Post a Comment