出现该问题时,通常是由于SignalR的连接被过早释放所导致的。 可以通过在调用stop方法前延迟一段时间解决这一问题,例如:
import { Injectable } from '@angular/core'; import * as signalR from '@aspnet/signalr';
@Injectable({ providedIn: 'root' }) export class SignalRService { private hubConnection: signalR.HubConnection;
constructor() { this.hubConnection = new signalR.HubConnectionBuilder() .withUrl('/hub') .build();
this.hubConnection.start()
.then(() => console.log('SignalR Connection Started!'))
.catch(err => console.log('Error while starting SignalR connection: ' + err));
}
public stopConnection(): void { setTimeout(() => { this.hubConnection.stop(); console.log('SignalR Connection Stopped!'); }, 2000); } }
在上面的代码中,我们在stopConnection()方法中使用了setTimeout()函数,将SignalR的连接释放延迟了2秒,以确保在释放连接前完成了所有必要的操作。这样可以有效地解决问题。