Итак, в основном, у меня есть SignalR-хаб, написанный на C # как бэкэнд.Я подключаю его к своему угловому приложению, используя @ aspnet / signalr @ 1.1.4.У меня есть простая логика переподключения, написанная в моем приложении, которое запускает событие HubConnection.onclose, когда состояние hubconnection изменяется на отключенное.HubConnection должен запускать событие onclose при ошибке, но не тогда, когда активный поток все еще присутствует.
Если я удаляю методы потока из обещания после запуска, концентратор правильно отключается.Я не знаю, что мне с этим делать.
private _firstChannelSource: Subject<any>;
protected startHub() {
this._firstChannelSource.subscribe(ev => {
console.log('ev: ' + JSON.stringify(ev));
})
return Observable.fromPromise(this.connection.start().then(() => {
this.openFirstChannel().subscribe(this._firstChannelSource);
})).map(() => true);
}
private openFirstChannel(): Observable<any> {
return Observable.create((observer: Observer<any>) => {
this.connection.stream('firstChannel').subscribe(observer); // -> if I remove this the hub disconnects correctly
});
}
public ChannelReader<object> FirstChannel()
{
return _firstChannelService.GetMessagesObservable().AsChannelReader();
}
FirstChannelService потребляет сообщения от посредника сообщений, а затем подталкивает его к некоторой теме, и метод GetMessagesObservable () просто отображает эти сообщения в объекты с правильнымиТип.
Я хочу, чтобы мой клиент правильно отключился от концентратора сервера