Я пытаюсь создать свой первый сайт 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, мой код работает хорошо.
Теперь я отключил функцию шифрования, и она работает.