因此,基本上,我有用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()会将这些消息简单地映射为具有正确类型的对象。
我想让客户端从服务器中心正确断开连接