信号连接到集线器但无法调用方法

时间:2020-05-22 13:52:57

标签: signalr

问题

我们的signalR服务遇到一些奇怪的问题。 signalR服务有时有效,有时却无效。服务连接没有问题,但是当我们尝试调用某些方法时,出现以下错误:

在服务器上调用XXXX时发生意外错误。

我们尝试启用详细日志记录,但是错误消息是相同的。在下面的代码段中,您可以看到我们遇到的错误,此外,您还可以看到客户端在错误发生后继续对服务器进行ping操作。

SignalR ws image

我们尝试过的事情

我们用signalR设置了3种不同的环境。其中一种环境正在运行,但在其他2种环境中我们遇到了上述错误。我们尝试检查一下工作环境中的代码,使之失效,并且无法解决我们的signalR问题。到目前为止,我们尝试了什么:

  • 重新启动signalR服务。
  • 重命名集线器。
  • 清洁和重建解决方案。

signalR日志并不能告诉我们太多。这是我们从Azure上的日志中消失的消息:

“消息”:“连接异常。原因:连接ping超时。”,“类型”:“ ConnectivityLogs”,“集合”:“连接”

这是失败的方法:

public async Task AddToItemGroupTest(Guid itemId)
{
  var securityLogger = await CreateSecurityLoggerForConnectionChanges(itemId);
  await Groups.AddToGroupAsync(Context.ConnectionId, GetItemGroupIdentifier(itemId,      _applicationSettings.EnvironmentShortName));
            securityLogger.LogDataCreate($"connection to itemhub on item with id: {itemId}");
 }

客户端:

NotificationService.getItemConnection().invoke("AddToItemGroup"  + Constants.environmentShortName, itemId)
  .then(() => {
    this.addGroupToActiveGroups("item", "AddToItemGroup"  + Constants.environmentShortName, itemId);
    connectionChangedCallback(connectionStatus.connected);
    callback();
    })
   .catch((error) => {
    connectionChangedCallback(connectionStatus.disconnected);
    console.log(`Failed adding client to group. Error: ${error}`);
    throw Error(`Failed adding client to group. Error: ${error}`);
});

getItemConnection看起来像这样:

 private static getItemConnection() {
  if (!this.itemConnection) {
    this.itemConnection = new SignalR.HubConnectionBuilder()
      .withUrl(Constants.itemHubUrl, {
       accessTokenFactory: () => {
        return getUserAccesTokenOrForceLogin(this.authService);
       }})
       .withAutomaticReconnect()
       .build();
      }
  return this.itemConnection;
}

0 个答案:

没有答案