我正在连接具有多个状态(路由)的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;
}`
答案 0 :(得分:0)
您需要优雅地结束订阅,请查看此文章。
Angular/RxJs When should I unsubscribe from `Subscription`
否则,我如何使用socket.io + routing是我将socket.io订阅移动到全局服务。然后在组件中注入全局服务,该服务具有一个统一的socket.io订阅。