socket.io + angular2 + observer多次状态(路由)当事件多次触发(多次)

时间:2018-05-18 16:44:50

标签: angular sockets angular2-routing

我正在连接具有多个状态(路由)的Angular2应用程序和在后端运行的节点服务器(Socket)。当我访问其他某个状态并回到之前的状态时,套接字代码写在使用fromEvent创建的角度应用程序的服务文件中。 subscribe()在ngoninit(){}中调用的多个组件中调用的服务。我在路径上移动的频率会在事件触发时获取组件视图和事件,所以多次(多次)调用订阅的服务(多次显示console.log("获取消息")),这会影响表现。

    `get-messages() {
let observable = new Observable(observer => {
  this.socket = io(this.url);
  this.socket.on('message', (data) => {
    observer.next(data);    
  });
  return () => {
    this.socket.disconnect();
  };  
})     
return observable;

}`

1 个答案:

答案 0 :(得分:0)

您需要优雅地结束订阅,请查看此文章。

Angular/RxJs When should I unsubscribe from `Subscription`

否则,我如何使用socket.io + routing是我将socket.io订阅移动到全局服务。然后在组件中注入全局服务,该服务具有一个统一的socket.io订阅。