Угловая приборная панель и ngx-mqtt - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь создать свой первый сайт Angular с подключением MQTT.Я использую ngx-mqtt npm-package.Веб-сайт содержит панель управления, карты которой отправляются серверной программой.По сути, это уже работает, но я обнаружил, что первое сообщение MQTT отправляется на сервер примерно через 2 секунды.Может кто-нибудь сказать мне, что я делаю не так.

import { IMqttMessage, MqttService } from 'ngx-mqtt';
import { Subscription } from 'rxjs';

export interface DashboardCard {
  title: string,
  cols: number,
  rows: number
  // description: string,
  // topic: string
}


@Component({
  selector: 'my-home-my-home-dashboard',
  templateUrl: './my-home-dashboard.component.html',
  styleUrls: ['./my-home-dashboard.component.css']
})
export class MyHomeDashboardComponent implements OnInit {
  public cs: DashboardCard[] = [];
  public colCount: number;
  public message: string;

  private subscription: Subscription;
  private menuTopic = 'home/apiCall/getMenu';

  constructor(private mqttService: MqttService) {
    this.mqttService.unsafePublish('home/status', this.mqttService.clientId);
  }


  ngOnInit() {
    this.colCount = (window.innerWidth <= 420) ? 2 : (window.innerWidth <= 600) ? 3 : 6;

    console.log(new Date().toLocaleTimeString() + ': clientID: ' + this.mqttService.clientId);
    console.log('state: ' + this.mqttService.state.getValue());

    this.subscription = this.mqttService.observe(this.menuTopic + '/' + this.mqttService.clientId).subscribe((message: IMqttMessage) => {
      console.log(new Date().toTimeString() + ': message received');
      const value = JSON.parse(message.payload.toString());
      console.log('message: ' + message.payload.toString());
      this.cs = new Array<DashboardCard>(Object.keys(value).length);

      for (const valueKey of value) {
        this.cs.push({
          title: valueKey.title,
          cols: valueKey.cols,
          rows: valueKey.rows
        });
      }

    });
    console.log(new Date().toTimeString() + ': client: >' + this.mqttService.clientId + '<');
    this.mqttService.unsafePublish(this.menuTopic, this.mqttService.clientId);
    //the server receives this message with a delay of 2 seconds !!???

  }

  onResize(event) {
    this.colCount = (window.innerWidth <= 420) ? 2 : (window.innerWidth <= 600) ? 3 : 6;
  }


}

=============================

Обновление 20.09.19

Я думаю, что есть проблема на моем сервере ....

Когда я использую сервер test.mosquitto.org, мой код работает хорошо.

Теперь я отключил функцию шифрования, и она работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...