gpt4 book ai didi

某些用户的 signalr serverSentEvents 失败,但其他用户则不会

转载 作者:行者123 更新时间:2023-12-02 00:01:47 24 4
gpt4 key购买 nike

我们部署到本地开发服务器,一些用户(不是全部)遇到信号器问题,其中 serverSentEvents 无法连接并回退到长轮询......通常这会很好,但需要 5 秒才能下降回来,用户体验很糟糕。

请求在 chrome 的开发人员工具网络选项卡中获得“已取消”状态,我们最终使用 signalr 的 longPolling 进行连接。这是来自 signalr 的日志记录:

[16:09:28 GMT-0500 (Eastern Standard Time)] SignalR: Client subscribed to hub 'chat'. jquery.signalR-2.0.0.js:75
[16:09:28 GMT-0500 (Eastern Standard Time)] SignalR: Negotiating with '/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22chat%22%7D%5D&clientProtocol=1.3'. jquery.signalR-2.0.0.js:75
[16:09:28 GMT-0500 (Eastern Standard Time)] SignalR: Attempting to connect to SSE endpoint 'http://mysubdomain.mydomain.com/signalr/connect?transport=serverSentEvents&con…bYUr2xEEBuw%3D%3D&connectionData=%5B%7B%22name%22%3A%22chat%22%7D%5D&tid=6'. jquery.signalR-2.0.0.js:75
[16:09:33 GMT-0500 (Eastern Standard Time)] SignalR: serverSentEvents timed out when trying to connect. jquery.signalR-2.0.0.js:75
[16:09:33 GMT-0500 (Eastern Standard Time)] SignalR: EventSource calling close(). jquery.signalR-2.0.0.js:75
[16:09:33 GMT-0500 (Eastern Standard Time)] SignalR: This browser supports SSE, skipping Forever Frame. jquery.signalR-2.0.0.js:75
[16:09:33 GMT-0500 (Eastern Standard Time)] SignalR: Opening long polling request to 'http://mysubdomain.mydomain.com/signalr/connect?transport=longPolling&connecti…bYUr2xEEBuw%3D%3D&connectionData=%5B%7B%22name%22%3A%22chat%22%7D%5D&tid=2'. jquery.signalR-2.0.0.js:75
[16:09:33 GMT-0500 (Eastern Standard Time)] SignalR: Long poll complete. jquery.signalR-2.0.0.js:75
[16:09:33 GMT-0500 (Eastern Standard Time)] SignalR: LongPolling connected.

一旦客户端最终通过长轮询连接,网站就可以正常工作,但我仍然需要弄清楚为什么 serverSentEvents 不工作。

我可以禁用 serverSentEvents 来解决这个问题,但它适用于某些人而不适用于其他人,所以我想知道是否有某种方法可以找出为什么它对某些人而不是其他人失败。

关于如何诊断这个问题有什么建议吗?

最佳答案

从服务器发送的事件传输回退需要 5 秒,因为这是 SignalR 的默认 TransportConnectTimeout。可以在应用程序启动时通过 GlobalHost.Configuration.TransportConnectTimeout 缩短此 TimeSpan。

SSE 失败的原因有很多。例如,您的 SignalR 服务器和客户端之间可能存在路由器或防火墙,它们正在合并或关闭服务器发送事件传输所依赖的分块 HTTP 响应。当我只知道连接超时时,很难确定 SSE 问题的确切原因是什么。

关于某些用户的 signalr serverSentEvents 失败,但其他用户则不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20892449/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com