SignalR 2.2 回退传输已耗尽 - 连接不可靠



Edit 实际上,这根本不是固定的,它只是碰巧在更改后立即工作。我在这里很迷茫。

我有一个网站,它是一个社交媒体聚合器,它从不同的社交网站收集媒体,并将其推送给连接的用户。

这对我和大多数其他用户来说效果很好,但我们最大的客户之一是在可靠连接方面遇到问题。

以下链接几乎是相同的问题,此处建议的修复程序也适用于我:SignalR 2 长轮询"协议"请求未在本地运行时超时

我的问题是:为什么除了这个客户之外,这对其他人都有效?我假设这与他们的网络配置/代理/vpn 等有关。

我将客户端的超时增加到 10 秒,将

服务器端的超时增加到 10 秒,所以如果我理解正确,现在是 20 秒的超时。

有人可以帮助解释可能导致我所看到的原因吗?他们的互联网速度不慢,网站响应迅速,可以像他们的网络配置和延迟一样简单吗?还是某种代理会减慢连接速度,从而导致默认设置出现问题?

我想了解为什么此修复程序似乎可以解决问题,我不愿意认为现在已经解决了,因为这对我来说似乎很奇怪。

我进行此更改之前的日志如下所示:

SignalR: Client subscribed to hub 'myhub'.
SignalR: Negotiating with '/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D'.
SignalR: serverSentEvents transport starting.
SignalR: Attempting to connect to SSE endpoint 'signalr/connect?transport=serverSentEvents&clie…3gsDmCzfkA%3D%3D&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D&tid=7'.
SignalR: EventSource connected.
SignalR: serverSentEvents transport connected. Initiating start request.
SignalR: serverSentEvents transport failed during the start request. Stopping the connection.
SignalR: Stopping connection.
SignalR: EventSource calling close().
SignalR: Fired ajax abort async = true.
SignalR: The start request aborted because connection.stop() was called.
SignalR: Client subscribed to hub 'myhub'.
SignalR: Negotiating with '/signalr/negotiate?clientProtocol=1.5&connectionToken=ubEjncDXPj0%2BF6YsbdPGaBRMoRKpb6b2rmP96H8I8dzoNNrQuG3hzvmBmcvTeocMXMKphG7WAYx%2B5CXWZqHTQzQ0Ix4Q0oY8WSGBbrK0Gg642QUJ4H2CP%2F%2F%2BZeWf6s9gpW6VsbAmlu453gsDmCzfkA%3D%3D&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D'.
SignalR: serverSentEvents transport starting.
SignalR: Attempting to connect to SSE endpoint '/signalr/connect?transport=serverSentEvents&clie…jsKYjxsjjQ%3D%3D&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D&tid=2'.
SignalR: EventSource connected.
SignalR: serverSentEvents transport connected. Initiating start request.
SignalR: serverSentEvents transport failed during the start request. Stopping the connection.
SignalR: Stopping connection.
SignalR: EventSource calling close().
SignalR: Fired ajax abort async = true.
SignalR: The start request aborted because connection.stop() was called.
SignalR: Client subscribed to hub 'myhub'.
SignalR: Negotiating with '/signalr/negotiate?clientProtocol=1.5&connectionToken=gOOVxYvgb3S%2Fd2lHGesc%2BqQmm26O5E0sA72Sctx3HXaKmZniWL2LokTGYF7QTpGEInG2%2B%2FiscmTx%2BfA0JWbMB6oJkgWEJ0zd2zlJdvy8BpZsDaJXIBK3pIEZxognlA6qsOECLf5IEY%2BrjsKYjxsjjQ%3D%3D&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D'.
SignalR: serverSentEvents transport starting.
SignalR: Attempting to connect to SSE endpoint '/signalr/connect?transport=serverSentEvents&clie…QWnHGdfTg%3D%3D&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D&tid=10'.
SignalR: serverSentEvents transport timed out when trying to connect.
SignalR: EventSource calling close().
SignalR: serverSentEvents transport failed to connect. Attempting to fall back.
SignalR: foreverFrame transport starting.
SignalR: Forever Frame is not supported by SignalR on browsers with SSE support.
SignalR: foreverFrame transport failed to connect. Attempting to fall back.
SignalR: longPolling transport starting.
SignalR: Opening long polling request to '/signalr/connect?transport=longPolling&clientPro…YXqliyLQWnHGdfTg%3D%3D&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D'.
SignalR: longPolling transport timed out when trying to connect.
SignalR: Aborted xhr request.
SignalR: longPolling transport failed to connect. Attempting to fall back.
SignalR: Fallback transports exhausted.
SignalR: Stopping connection.
SignalR: Fired ajax abort async = true.

在我进行更改后:

SignalR: Client subscribed to hub 'myhub'.
SignalR: Negotiating with '/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D'.
SignalR: serverSentEvents transport starting.
SignalR: Attempting to connect to SSE endpoint '/signalr/connect?transport=serverSentEvents&clie…Ck0cV1%2Fg%3D%3D&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D&tid=1'.
SignalR: EventSource connected.
SignalR: serverSentEvents transport connected. Initiating start request.
SignalR: The start request succeeded. Transitioning to the connected state.
SignalR: Now monitoring keep alive with a warning timeout of 6666.666666666666, keep alive timeout of 10000 and disconnecting timeout of 15000

我发现了这个问题,Chrome 已经过时了!!

客户端安装了版本 37,现在已经有 12 个版本过时了,因为它们在版本 49 上(截至创建本文时的版本)

我安装了早期版本的 SignalR v2.1.1,因为我听说这是一个非常稳定的版本,其他人对版本 2.2 有问题

这也不起作用,我没有获得保持活动状态的ping,并且连接会不断自我回收。

一旦我找到了他们使用的chrome版本,我就简单地安装了chrome v37之后和v38之前发布的SignalR版本(幸运的是,他们在这些版本之间发布了SignalR。这简单地解决了问题。

我现在正在客户端上工作,以将其版本更新为最新版本。祝我好运!

最新更新