活动流阻止SignalR HubConnection更改状态

时间:2019-05-31 06:51:22

标签: javascript c# typescript rxjs signalr

因此,基本上,我有用C#编写的SignalR集线器作为后端。我正在使用@ aspnet / signalr @ 1.1.4将其连接到我的angular应用程序。 我在我的应用程序中编写了简单的重新连接逻辑,当集线器连接状态更改为断开连接时,该逻辑将触发HubConnection.onclose事件。 HubConnection应该在发生错误时触发onclose事件,但在活动流仍然存在时不应该触发。

如果启动后我从promise中删除流方法,则集线器将正确断开连接。我不知道该怎么办。

    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()会将这些消息简单地映射为具有正确类型的对象。

我想让客户端从服务器中心正确断开连接

0 个答案:

没有答案