Вы можете использовать Observable или Subject для прослушивания потока данных в реальном времени. Ваша служба сокетов, вероятно, будет выглядеть следующим образом.
export class MqttService {
private mqttClient:any;//any mqtt implementation library
connect(params:any): {
this.mqttClient = mqtt.connect('connection url');
}
onTopic(topic: string,header:any): Observable<any> {
//subscribe any topic here.
return Observable.create((observer) => {
this.mqttClient.observe(topic).subscribe((message) => {
observer.next(JSON.parse(message.payload.toString()));
},header);
});
}
}
После того, как вы написали свой сервис, используйте его внутри любого компонента, который вы пожелаете.
export class Tab1Page {
@ViewChild("barCanvas", { static: true }) barCanvas: ElementRef;
private barChart: Chart;
constructor(private mqttService:MqttService){}
ngOnInit() {
this.barChart = new Chart(this.barCanvas.nativeElement)//no idea how to init this Class,
this.mqttService.onTopic("app/chart").subscribe(data=>{
this.refreshChart(this.barChart,data)
})
}
refreshChart(chart:Chart,data){
//refresh the chart
}
}