我们正在使用微软提供的@ Microsoft /signalr组件从角度UI连接到我们的signaR服务。当我们没有发送承载授权cookie时,我们能够连接到服务器。但是,当我们向signalR服务发送cookie时,我们会看到以下错误:
错误:无法启动连接:错误:无法用任何可用传输连接到服务器。错误: WebSockets失败:错误: WebSocket连接失败。无法在服务器上找到连接,或者端点可能不是SignalR端点,连接ID不在服务器上,或者存在代理阻塞WebSockets.If,多个服务器检查是否启用了粘性会话。
我们已经通过一个signalR窗口应用程序对.Net服务进行了测试,并且它在那里工作得很好。我们还测试了使用websockets通过邮递员连接服务,我们在那里也没有任何问题。我们尝试过许多方法来尝试围绕这一问题开展工作,但都没有结果。
我曾尝试通过邮递员和windows应用程序连接到服务器,并且按预期工作。
public init() {
let token = "OKTA token";
let tokenValue = '';
if (token !== '') {
tokenValue = '?token=' + token;
}
this.hubConnection = new signalR.HubConnectionBuilder
.withUrl("https://server:25247/netshub/",{// +tokenValue
accessTokenFactory: () => {
return token;
}
})
this.hubConnection.start().catch((err) => console.error(err.toString()));
}发布于 2022-11-14 15:43:01
在我的例子中,它是不正确的集线器选项:缺少withCredentials: true和令牌应该是一个空值(只有长字符串,没有任何装饰等等-参见.replace('Bearer ', '') )。我的代码:
private hubOptions: IHttpConnectionOptions = {
withCredentials: true,
accessTokenFactory: async () => {
return (await this.authenticationService.GetAccessToken()).replace('Bearer ', '');
}
};
this.hubConnection = new HubConnectionBuilder()
.withUrl(this.hubUrl, this.hubOptions)
.withAutomaticReconnect()
.build();
this.hubConnection
.start()记住要使用安全连接: https和wss协议。
https://stackoverflow.com/questions/74433580
复制相似问题