socket.io + angular2 + наблюдатель нескольких состояний (маршрутов), когда событие срабатывает много раз (несколько раз) - PullRequest
0 голосов
/ 18 мая 2018

Я подключаю приложение Angular2 с несколькими состояниями (Маршруты) к Node-серверу (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 Ответ

0 голосов
/ 18 мая 2018

Вы должны закончить подписку, изящно, прочитайте эту статью.

Angular / RxJs Когда мне следует отписаться от `Subscription`

В противном случае, как я работаюс помощью socket.io + маршрутизация заключается в том, что я перемещаю подписку socket.io в глобальный сервис.И затем в компонентах вы вводите глобальную службу, которая имеет одну, единую подписку socket.io.

...