SignalR(天蓝色)。确定用户断开连接的原因

时间:2020-03-15 12:14:02

标签: azure signalr

我们在Azure上托管了SignalR服务。

出于技术原因,对于我们而言,保持客户端与主机之间尽可能稳定的连接至关重要。而且正在发生的是,在相对随机的时间间隔内,一些客户端断开了连接。我们知道,这与客户端的Internet连接无关。

因此,问题是,如何确定断开连接的原因。 我们的SignalR集线器实现重写'OnDisconnectedAsync'。并且该方法具有“ Exception exc”参数。不幸的是,每次触发它,exc总是为空(我希望在那里找到断开连接的详细信息)。

其他详细信息: 我们在服务器端使用以下SignalR软件包: Microsoft.AspNet.SignalR(2.4.0) Microsoft.Azure.SignalR(1.0.5)

在客户端,我们使用“ Microsoft.AspNetCore.SignalR.Client.Core”(1.1.0)

我们还检查了Azure SignalR(单元)上是否有足够的资源

以下是用户断开连接时的日志(在OnDisconnectedAsync之后发生): 2020-03-15 11:38:07.391 +00:00 [Debug] Microsoft.AspNetCore.SignalR.HubConnectionHandler:OnConnectedAsync结尾。 2020-03-15 11:38:07.391 +00:00 [Debug] Microsoft.Azure.SignalR.ServiceConnection:将关闭连接消息发送到GFf8suySt2eMsOCLuYg0-wbb16618b1的服务。 2020-03-15 11:38:07.391 +00:00 [Debug] Microsoft.AspNetCore.Http.Connections.Client.Internal.WebSocketsTransport:从应用程序接收到消息。有效负载大小:36。 2020-03-15 11:38:07.393 +00:00 [Debug] Microsoft.AspNetCore.Http.Connections.Client.Internal.WebSocketsTransport:收到消息。类型:二进制,大小:37,EndOfMessage:真。 2020-03-15 11:38:07.393 +00:00 [Debug] Microsoft.Azure.SignalR.ServiceConnection:从服务12aa875c-a5b6-4842-8bc1-2d67e7ab30f6接收了37个字节。 2020-03-15 11:38:07.393 +00:00 [Debug] Microsoft.Azure.SignalR.ServiceConnection:连接GFf8suySt2eMsOCLuYg0-wbb16618b1已结束。

1 个答案:

答案 0 :(得分:1)

当客户端连接到Azure SignalR时,客户端和Azure SignalR之间的持久连接有时会由于不同的原因而断开。本节描述了导致这种连接断开的几种可能性,并提供了有关如何确定根本原因的指导。

从客户端看到的可能错误:

  • 远程方未完成关闭握手就关闭了WebSocket连接
  • 服务超时。没有收到来自服务的消息,经过了30.00ms。
  • {“类型”:7,“错误”:“连接因错误而关闭。”}
  • {“类型”:7,“错误”:“内部服务器错误。”}

根本原因:

在各种情况下,客户端连接可能会断开:

  • 当Hub对传入的请求引发异常时。
  • 当客户端路由到服务器连接断开时,请参阅以下部分以了解有关服务器连接断开的详细信息。
  • 当客户端和SignalR服务之间发生网络连接问题时。
  • 当SignalR Service出现一些内部错误(例如实例重新启动,故障转移,部署等)时。

请参阅https://github.com/Azure/azure-signalr/blob/dev/docs/tsg.md#client-connection-drops