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。这简单地解决了问题。
我现在正在客户端上工作,以将其版本更新为最新版本。祝我好运!