Когда я изменяю маршрут и возвращаюсь к тому же маршруту, на который была подписана тема, каждый раз, когда я меняю маршрут, создается дублирующий слушатель.
Чтобы остановить это, я использовал отписанную функциональность субъектов, но проблема возникла после отписки от темы.Я не могу подписаться снова и не могу прослушать событие.
socketservices.ts
:
connect(): Rx.BehaviorSubject<MessageEvent> {
// We define our observable which will observe any incoming messages
// from our socket.io server.
let observable = new Observable(observer => {
this.socket.on('message', (data) => {
observer.next(data);
})
return () => {
this.socket.disconnect();
}
});
// We define our Observer which will listen to messages
// from our other components and send messages back to our
// socket server whenever the `next()` method is called.
let observer = {
next: (data: Object) => {
console.log('sending message')
this.socket.emit('message', JSON.stringify(data));
},
};
// we return our Rx.Subject which is a combination
// of both an observer and observable.
return Rx.BehaviorSubject.create(observer, observable);
}
admincomponent.ts
:
//constructor includes public webSoc:SocketServiceService
this.subscription = this.webSoc.connect().subscribe(data=>{
if (data['response'] == "dvc_board") {
console.log('listening')
this._updatebins()
}
})