gpt4 book ai didi

asp.net - Firefox 中意外的 Signalr 连接中止

转载 作者:行者123 更新时间:2023-12-04 11:38:01 29 4
gpt4 key购买 nike

我正在使用 SignalR(具有跨域请求),版本 2.3.0 用于集成到 ASP.NET 站点的网络聊天。一切正常。但我发现 SignalR 连接的奇怪行为。当我单击聊天选项卡中的引用以下载文件时,SignalR 连接被中止,并且在我的 Hub 类中触发了 onDisconnected 方法。 FireBug 向我展示下一个 POST 请求:

http://*:81/signalr/abort?transport=longPolling&clientProtocol=1.4&token=eUpLNitKcmR1d2JhTTRvcHNVZmEwcG1EKzYvMElZbmg4aE5yam9xM3k0dz0_IjAsNGJmOWNhODUtNDU2NS00NWExLWFjMTgtNzgyN2FhZDA2Njg1LGxvY2FsaG9zdCI1&State=1&connectionToken=hDXe9xIZtmrapjl1LRwtK9B%2BfYMoeuHka8ctBLaPa0YnjiN9iiFa%2BvFMBHIGpGH0h8qPEDgGZSRGwjMw3Wm1DJi6cUPtZjLca6%2FR2576SGksLAj3lnPN1JWIlxMsn8%2Bf&connectionData=%5B%7B%22name%22%3A%22c%22%7D% 2C%7B%22name%22%3A%22voip%22%7D%5D,其中 * 是我的域。

它在 Mozilla Firefox(30.0 版)中复制用于 LongPolling 或 Websocket 传输。我该如何解决这个问题?还是 SignalR 或 Firefox 的错误?

最佳答案

This bug最近已在 GitHub 上针对 SignalR 提起诉讼。基本思想是下载文件会导致 Firefox 触发 window.onbeforeunload反过来导致 SignalR 关闭任何正在进行的连接的事件。

目前,解决方法是将处理程序附加到客户端的断开连接事件,该事件将调用 $.connection.start。在短暂的 window.setTimeout 之后再次.

您还可以取消绑定(bind) SignalR 的 onbeforeunload 处理程序:$(window).unbind("beforeunload") .这样做的缺点是,当用户离开运行 SignalR 的页面时,Firefox 可能无法正常断开连接。如果没有正常断开连接,SignalR 将等待超过 30 秒,然后客户端超时并调用 OnDisconnected Hub 上的处理程序或 PersistentConnection .

关于asp.net - Firefox 中意外的 Signalr 连接中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24533223/

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