Когда я пытался использовать мульти-сигнальные концентраторы в моем приложении, я сталкивался с этой ошибкой:
Соединение WebSocket с 'ws: // localhost: 12574 / StockHub? Id = D2xjWXyS2iRhsW5zHRnEqw & access_token = eyJhbGIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJSIIIJIJIJIJIIJIJIJI eyJpZCI6IkZJcVVLQVd5N1VzJTNEIiwiZGVsaWdhdGVkVXNlcklkIjoiRklxVUtBV3k3VXMlM0QiLCJpc1BlcnNpc3RlbnQiOiJGYWxzZSIsInVzZXJFbWFpbCI6ImhhbmFuLnNheWVkLmVscWVtYW1AZ21haWwuY29tIiwibW9iaWxlIjoiOTk5OTk5OTk5OSIsInBjX2lwIjoiMTAuMC40LjUiLCJqb2IiOiJkZXYiLCJwb3NpdGlvbiI6IkVtcGxveWVlIiwicG9zaXRpb25LZXkiOiJlbXBsb3llZSIsImxhbmciOiJhciIsImJyb3dzZXIiOiJDaHJvbWUiLCJuYW1lIjoiSGFuYW4gYWxpIGFobWVkIGFobWVkIiwiZGVwYXJ0bWVudCI6Itiq2LnYr9mK2YQg2KfZhNin2K_Yp9ix2YciLCJzdGF0aWNLZXkiOiJ1c2VyIiwibmJmIjoxNTgyMDk4NTgwLCJleHAiOjE1ODIzNTc3ODAsImlhdCI6MTU4MjA5ODU4MH0.3ChJytgrdwQ8Zgj8HQmhV-г-J7ks0NDLutqfq8h2fZg»не удалось: HTTP Ошибка аутентификации; допустимые учетные данные недоступны
Примечание:
Первое подключение успешно установлено. Эта ошибка возникает при попытке установить второе соединение
Мой код ASP. net Ядро:
Первый концентратор:
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public class QDeskHub: Hub
{
public override async Task OnConnectedAsync()
{
await base.OnConnectedAsync();
}
public override async Task OnDisconnectedAsync(Exception exception)
{
await base.OnDisconnectedAsync(exception);
}
}
Второй концентратор:
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public class stockHub: Hub
{
public stockHub()
{
}
public override async Task OnConnectedAsync()
{
string connectionId = Context.ConnectionId;
await base.OnConnectedAsync();
}
public override async Task OnDisconnectedAsync(Exception exception)
{
await base.OnDisconnectedAsync(exception);
}
}
запуск:
app.UseSignalR(routes =>
{
routes.MapHub<QDeskHub>("/QDesk");
routes.MapHub<stockHub>("/StockHub");
});
Angular:
public hubConnection: signalR.HubConnection
public connectionStarted = false;
/* to start connection with hub */
public startConnection = (url) => {
this.hubConnection = new signalR.HubConnectionBuilder()
.withUrl(url, { accessTokenFactory: () => localStorage.getItem("token") })
.build();
// this.hubConnection.serverTimeoutInMilliseconds=50000;
this.hubConnection
.start()
.then(() => {
debugger;
this.connectionStarted = true
console.log('Connection started')
})
.catch(err => console.log('Error while starting connection: ' + err))
this.hubConnection.onclose(() => {
debugger;
setTimeout(() => {
this.hubConnection
.start()
.then(() => {
this.connectionStarted = true
console.log('Connection re-started')
})
.catch(err => console.log('Error while re-starting connection: ' + err))
}, 1000);
})
}
In angular компоненты:
this.signalRService.startConnection(this.pathAPI + "QDesk");
this.signalRService.startConnection(this.pathAPI + "StockHub");