首页 > 解决方案 > 退订后无法重新订阅主题

问题描述

当我更改路由并返回订阅主题的同一路由时,每次更改路由时都会创建一个重复的侦听器。

为了阻止这种情况,我使用了主题的取消订阅功能,但问题出现在取消订阅主题之后。我无法再次订阅,也无法收听活动。

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()
  }
})

标签: angulartypescriptsocket.iorxjsbehaviorsubject

解决方案


推荐阅读