Как я могу наблюдать за изменением переменной в классе в nodejs? - PullRequest
0 голосов
/ 27 мая 2020

Привет, ребята, не знакомые с 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.

...