Socket (на клиенте) инициализируется на нескольких страницах:
this.socket.on('server-response', data => { })
Что нужно написать в ngOnDestroy(){} или в ionViewDidLeave() {}, чтобы отписаться от слушателя только на этой странице, которую покидаю?
Опишу проблему подробно: Есть страница, request.page.ts , которая используется многократно. Отображаемые на ней данные зависят от id, например: "/home/request;id=24" и "/home/request;id=175".
При выходе со страницы мне нужно уничтожить её. Пытаюсь сделать это несколькими вариантами:
goBack(){
this.navCtrl.navigateRoot('/home');
this.router.navigate(['/home'], {replaceUrl: true})
this.location.back();
}
Допустим я выхожу со страницы "/home/request;id=24". После такого выхода история url-перемещений как бы удаляется, я не могу вернуться на неё путём нажатия на кнопку "назад", но сокеты на ней и разные функции продолжают работать. Если я открою эту же страницу, "/home/request;id=24" или новую "/home/request;id=175", компонент инициализируется заново, и получается, что та закрытая страница существует в фоне и функции на ней продолжают отрабатываться..
Соответственно, если страница не уничтожается, от событий на ней нужно отписаться (Нагуглиг про unsubscribe).
У socket.io на клиенте есть это:
this.socket.removeListener('server-response');
Но она отписывает не конкретную страницу, а все эти слушатели 'server-response', в том числе на других страницах.. Соответственно, что нужно написать в ngOnDestroy(){} или в ionViewDidLeave() {}, чтобы отписаться от слушателя только на этой странице, которую покидаю?