Firefox中意外的信号器连接中止

 颂春堂中药 发布于 2023-01-06 17:08

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

HTTP://*:81/signalr /中止运输= longPolling&clientProtocol = 1.4&标记= eUpLNitKcmR1d2JhTTRvcHNVZmEwcG1EKzYvMElZbmg4aE5yam9xM3k0dz0_IjAsNGJmOWNhODUtNDU2NS00NWExLWFjMTgtNzgyN2FhZDA2Njg1LGxvY2FsaG9zdCI1&状态= 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的错误?

1 个回答
  • 最近在GitHub上针对SignalR提交了这个错误.基本思想是下载文件会导致Firefox触发window.onbeforeunload事件,从而导致SignalR关闭任何正在进行的连接.

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

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

    2023-01-06 17:11 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有