aspnet / signalr: Ошибка при анализе ответа на рукопожатие: TypeError: Правая часть instanceof не вызывается - PullRequest
1 голос
/ 11 марта 2020

Я пытаюсь подключиться к сигнальному концентратору с помощью javascript клиента. Кажется, я могу подключиться, но сразу же отключился.

Некоторые журналы:

2020-03-11T11: 43: 47.974Z] Отладка: отправка запроса на подтверждение связи. Utils. js: 209 [2020-03-11T11: 43: 47.978Z] Информация: Использование HubProtocol 'json'. home.component.ts: 115 Ошибка при установлении соединения с сигналом r Ошибка: Ошибка при анализе ответа на рукопожатие: Ошибка типа: Невозможно вызвать правую часть «instanceof» в HubConnection.pu sh .. / node_modules / @ aspnet / signalr / dist / esm / HubConnection. js .HubConnection.processHandshakeResponse (HubConnection. js: 372) в HubConnection.pu sh .. / node_modules/@aspnet/signalr/dist/esm/HubConnection.*1026ction.H .processIncomingData (HubConnection. js: 322) в WebSocketTransport.HubConnection.connection.onreceive (HubConnection. js: 65) в WebSocket.webSocket.onmessage [как __zone_symbol__ON *PROPERTYmecketT.SecketState:. wrapFn (zone-evergreen. js: 1191) в ZoneDelegate.invokeTask (zone-evergreen. js: 391) в Object.onInvokeTask (core. js: 30885) в ZoneDelegate.invokeTask (zone-evergreen. js: 390) в Zone.runTask (зона-вечнозеленый. js: 168) в ZoneTask.invokeTask [как вызов] (зона-вечнозеленый. js: 465)

Error Image* 1 012 *

Я получаю вышеуказанную ошибку при подключении к концентратору SinalR. Ниже приведен код моего клиента:

this.hubConnection = new HubConnectionBuilder()
  .withUrl('http://localhost:5000/signalr', {
    accessTokenFactory: () => localStorage.getItem('token')
  })
  .configureLogging(LogLevel.Debug)
  .build();

this.hubConnection
  .start()
  .then( () => console.log(this.hubConnection.state))
  .catch( error => console.log('Error establishing connection to signal r ', error));

 this.hubConnection.on('TotalTrucks', trucks => {
  console.log('HERE = ', trucks);
  this.tucks = trucks;
});

Обратите внимание, что у меня есть Фоновая служба, отправляющая сообщения всем подключенным клиентам каждую минуту:

public class OtcWorker : BackgroundService
{
    private readonly IHubContext<OtcHub> _hubContext;
    private IServiceScopeFactory ServiceScopeFactory { get; set; }

    public OtcWorker(IHubContext<OtcHub> hubContext, IServiceScopeFactory serviceScopeFactory)
    {
        _hubContext = hubContext;
        ServiceScopeFactory = serviceScopeFactory;

    }

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        using (var scope = ServiceScopeFactory.CreateScope())
        {
            var services = scope.ServiceProvider;
            var context = services.GetRequiredService<WeighbridgeDataContext>();

            while (!stoppingToken.IsCancellationRequested)
            {
                var result = await context.ReceiptTransactions.ToListAsync();

                await _hubContext.Clients.All.SendAsync("TotalTrucks", result.Count);

                await Task.Delay(3600, stoppingToken);
            }
        }
    }
}
...