Привет, ребята, не знакомые с nodejs и javascript. Я хочу, чтобы эта простая программа, которую я сделал, чтобы смоделировать мою текущую проблему, иметь возможность читать значение переменной при ее изменении. В Android есть паттерн наблюдаемый-наблюдатель. Я слышал о методе прокси, но не могу сделать это в моем текущем примере.
Допустим, брокер. js ans publish_client. js работают ... Теперь у нас есть подписчик, который хочет для подключения к mqtt брокеру
var mqttHandler = require('./sub');
var mqtt = require('mqtt')
var sub_client = new mqttHandler();
var status=null
function connectClientA(){
sub_client.connect()
status = sub_client.getBrokerStatus
if(status==1)console.log("succesfully connected")
else if(status==0)console.log("error connecting to broker")
}
connectClientA()
Этот клиент создается и подключается к нему
var mqtt = require('mqtt')
var topic = 'action/switch'
var broker_status=2;
class MqttHandler {
constructor() {
this.mqttClient = null
}
connect() {
this.mqttClient = mqtt.connect('mqtt://localhost:1813')
this.mqttClient.on('connect', () => {
this.mqttClient.subscribe(topic)
console.log(`mqtt client connected`);
broker_status=1;
});
this.mqttClient.on('message', function (topic, message) {
console.log("Recieved ",message.toString())
});
this.mqttClient.on('error',(err)=>{
if (err.code == 'ECONNRESET') {
broker_status = 0;
}
if (err.code == 'ECONNREFUSED') {
broker_status = 0;
}
}) }
get getBrokerStatus(){return broker_status}
}
module.exports = MqttHandler;
К сожалению, я не могу придумать способ получить broker_status при изменении на = 1 или = 0.