javascript - Paho Javascript MQTT 订阅多个主题
问题描述
message_callback_add
当客户端订阅多个主题时,是否可以使用与 paho python 中使用的类似概念(在 javascript 中)来使用多个回调?我已经看到了if
条件的使用,onMessageArrived()
但我想知道是否存在更有效和更清洁的方法?
var mqtt; // MQTT variable/object
var reconnectTimeout = 5000; // 5 seconds for the reconnectTimeout
var host="localhost"; // MQTT bridge IP
var port=8083; // MQTT bridge port
MQTTconnect(); // Initialise the MQTT connections
function MQTTconnect(){
console.log("mqtt connecting to " + host + ":" + port);
mqtt = new Paho.MQTT.Client(host, port, "client_test");
var options = {
timeout: 100,
onSuccess: onConnect,
onFailure: onFailure,
};
mqtt.onMessageArrived = onMessageArrived;
mqtt.connect(options); // connect
}
function onConnect(){
console.log("Mqtt Connected - Subscribe to the topics");
mqtt.subscribe("topic1/a");
mqtt.subscribe("topic2/b");
}
function onFailure(message){
console.log("Connection attempt to MQTT " + host + " failed");
setTimeout(MQTTconnect, reconnectTimeout);
}
function onMessageArrived(msg){
if (msg.destinationName == "topic1/a"){
console.log("Topic1: ", msg.payloadString);
}
else if (msg.destinationName == "topic2/b"){
console.log("Topic2: ", msg.payloadString);
}
}
解决方案
不,JavaScript 中的所有消息只有一个回调。
onMessageArrived
唯一的选择是在回调中根据需要检查主题和分支
推荐阅读
- javascript - 使模态出现 OnClick
- class - 为什么代码总是打印 True。每当我检查相等但不打印给定字符串时总是打印布尔值
- python - 为什么我的类对象没有按预期工作?
- java - 将数字添加到列表并打印出来的按钮
- flutter - Flutter List View Builder 滚动控制器不起作用
- c# - 当我们在 cmd.ExecuteNonQuery(); 中连接我在 SQL Server 中的注册表单时;会出现线路错误
- firebase - Firebase Firestore 规则生产中的路径
- ios - 如何在phonegap中设置屏幕的默认排列?
- python - 嵌套文件夹中的文件读取速度更快还是无关紧要?
- reactjs - 无法使用 React 将数据插入到 Firebase Firestore 中的数组