У меня есть класс обслуживания (Ang 8+), который управляет созданием веб-сокета с помощью rxjs/webSocket()
factory:
@Injectable({
providedIn: 'root',
})
export class WebSocketChannel {
//................
create(url?: string): Observable<WebSocketPackage<any>> {
this.wsSubj = webSocket<WebSocketPackage<any>>(this.channelUrl);
this.wsSubj.pipe(
retryWhen(errors =>
errors.pipe(
tap(err => {
console.error('Websocket error', err);
}),
delay(1000),
),
),
)
.subscribe(
ok => console.log('ok'),
ko => console.log('ko'),
);
return this.wsSubj;
}
и компонента, который использует член wsSubj
в своем методе ngOnInit:
ngOnInit() {
this.wsManager.create();
this.wsManager.wsSubj
.subscribe(
data => {
console.log('HomeComponent WS OK');
},
err => {
console.log('HomeComponent WS ERROR CATCH');
},
() => console.log('complete')
);
}
Вот мои console.logs после остановки / запуска какого-либо сервера:
// Сервер Websocket UP
websocket-manager.ts: ok
component.ts: HomeComponent WS OK
// сервер веб-сокета DOWN
component.ts: HomeComponent WS ERROR CATCH
websocket-manager.ts: ' Ошибка веб-сокета '
// Сервер веб-сокета UP
websocket-manager.ts: ok
// Сервер веб-сокета DOWN
websocket-manager.ts: «Ошибка Websocket»
Короче говоря, после первого события «Отключение сервера» больше нет обращений к компоненту, но подписка внутри менеджера websocket по-прежнему работает хорошо.
Почему? Что мне нужно сделать, чтобы добраться до компонента после первого события down?