我正在连接具有多个状态(路由)的Angular2应用程序和在后端运行的节点服务器(Socket) . 当我访问其他某个状态并回到之前的状态时,套接字代码写在使用fromEvent创建的角度应用程序的服务文件中 . subscribe()在多个组件中调用的服务,在ngoninit(){}中调用 . 我在路径上移动的频率会在事件触发时获取组件视图和事件,所以多次(多次)调用订阅的服务(多次show console.log(“get message”)),这会影响性能 .
`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 回答
您需要优雅地结束订阅,请查看此文章 .
Angular/RxJs When should I unsubscribe from
Subscription
否则,我如何使用socket.io路由是我将socket.io订阅移动到全局服务 . 然后在组件中注入全局服务,该服务具有一个统一的socket.io订阅 .