如何关闭以前的socket.io连接并开始新的连接

时间:2019-05-02 15:35:53

标签: node.js angular express websocket socket.io

我在有角度的客户端和节点服务器之间建立了socket.io连接。

service.ts file


  connect_id1(id) : Observable<string>{
    this.socket = io('http://server1 ip:7496/milo/' + id, {transports : ['websocket']})
    console.log(this.socket)
    return this.observable = new Observable((observer) => {
      this.socket.on('data',(res : any) => observer.next(res));
    })
  }

  connect_id2(id) : Observable<string>{
    this.socket = io('http://server2 ip:7496/milo/' + id, {transports : ['websocket']})
    console.log(this.socket)
    return this.observable = new Observable((observer) => {
      this.socket.on('data',(res : any) => observer.next(res));
    })
  }

  connect_id3(id) : Observable<string>{
    this.socket = io('http://server3 ip:7496/milo/' + id, {transports : ['websocket']})
    console.log(this.socket)
    return this.observable = new Observable((observer) => {
      this.socket.on('data',(res : any) => observer.next(res));
    })
  }
component.ts file


    realTime(id) {
      this.webSocket.connect_id1(id).subscribe ((data:any) => console.log(data))
      this.webSocket.connect_id2(id).subscribe (data => console.log(data))
      this.webSocket.connect_id3(id).subscribe (data => console.log(data))

    }
component.html file

<div>
   <button (click)="realTime(selectedDevice)">Get Data for ID</button>   </div>

因此,基于所选设备,我想要该设备的数据。

我在后端有三台服务器,数据可以来自这三台服务器中的任何一台,因此我正在连接到所有三台服务器

我可以通过html更改要为其获取数据的设备,因此当我开始获取设备的数据,然后请求其他设备的数据时,以前的连接不会关闭,我正在获取数据两个设备。因此,如何关闭先前设备的连接并仅获取新设备的数据。我对此很陌生,所以我做的方式可能并不完全正确,可以接受建议

0 个答案:

没有答案