Я создаю угловое приложение, которое извлекает данные в реальном времени, используя сенсоры и node.js в качестве бэкэнда.
<div>
<label> <b>Device: </b></label>
<mat-form-field class="parameter">
<mat-select [(value)]="selectedDevice">
<mat-option value="00:12:4b:00:19:b8:6b:46">00:12:4b:00:19:b8:6b:46</mat-option>
<mat-option value="fd00::212:4b00:197b:2778">fd00::212:4b00:197b:2778</mat-option>
<mat-option value="fd00::212:4b00:197b:274a">fd00::212:4b00:197b:274a</mat-option>
</mat-select>
</mat-form-field>
</div>
<div>
<button (click)="realTime(selectedDevice)">Get Data for ID</button>
</div>
component.ts
realTime(id) {
this.webSocket.connect_id(id).subscribe ((data:any) => console.log(data))
}
in service.ts
connect_id(id) : Observable<string>{
this.socket = io('http://server_ip/milo/' + id, {transports : ['websocket']})
console.log(this.socket)
return this.observable = new Observable((observer) => {
this.socket.on('data',(res : any) => observer.next(res));
})
}
Поэтому, когда я выбираю устройство из выпадающего меню и получаю «Получить данные»для ID 'устанавливается сокетное соединение и извлекаются данные в реальном времени.
Итак, теперь, когда я выбрал другое устройство из выпадающего списка и снова «Получить данные для идентификатора», теперь я получаю данные для устройств.Я хочу получить данные только о недавно выбранном устройстве. Как этого добиться?Как мне отключиться от предыдущего соединения?