отключиться от предыдущего соединения сокета и установить новое соединение - PullRequest
1 голос
/ 03 мая 2019

Я создаю угловое приложение, которое извлекает данные в реальном времени, используя сенсоры и 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 'устанавливается сокетное соединение и извлекаются данные в реальном времени.

Итак, теперь, когда я выбрал другое устройство из выпадающего списка и снова «Получить данные для идентификатора», теперь я получаю данные для устройств.Я хочу получить данные только о недавно выбранном устройстве. Как этого добиться?Как мне отключиться от предыдущего соединения?

...