Активный поток предотвращает изменение состояния SignalR HubConnection - PullRequest
0 голосов
/ 31 мая 2019

Итак, в основном, у меня есть 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 () просто отображает эти сообщения в объекты с правильнымиТип.

Я хочу, чтобы мой клиент правильно отключился от концентратора сервера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...