SignalR 2 长轮询“协议”请求在未本地运行时超时

2024-01-24

目前我有一个非常健谈的应用程序,需要单例的支持(参见下面的代码)。我升级到 SignalR 2.0,并按照升级指南进行操作,但是将其部署到环境后,有时每个“协议”的所有请求都会失败,并且信号器会中断,而当它没有中断时,推送速度会非常慢从服务器向客户端发送通知,也许这与使用长轮询有关?这是我的服务器端代码的样子。

Owin启动类中的配置方法

 var hubConfig = new HubConfiguration();
 hubConfig.EnableDetailedErrors = true;
 GlobalHost.DependencyResolver.UseSqlServer(ConfigurationManager.AppSettings["ConnectionString"].ToString());
 app.MapSignalR(hubConfig);

正如您所看到的,我正在使用 SQL 背板。这是我的 Hub 的样子

public class MyHub : Hub
{
    public void JoinGroup(int someId)
    {
        Groups.Add(Context.ConnectionId, someId.ToString());
    }

    public void LeaveGroup(int someId)
    {
        Groups.Remove(Context.ConnectionId, someId.ToString());
    }
}

这里要指出的另一点是我正在使用组。这可能是问题的一部分,我注意到组似乎让事情变得更慢,就好像信号器在推出通知后正在等待组中的所有用户完成一样。我的单例看起来像这样。

public class Broadcaster
    {
        private readonly static Lazy<Broadcaster> _instance =
            new Lazy<Broadcaster>(() => new Broadcaster(GlobalHost.ConnectionManager.GetHubContext<MyHub>().Clients));
        private IHubConnectionContext _context;
        private Broadcaster(IHubConnectionContext context)
        {
            _context = context;
        }
        public static Broadcaster Instance
        {
            get { return _instance.Value; }
        }
        public void UpdateClient(int someId, int moreInfo)
        {
            _context.Group(someId.ToString()).Update(someId, moreInfo);
        }
    }

最后,这些是客户端日志的输出。

  • 16:37:25 GMT-0600(中部标准时间)] SignalR:客户端订阅 到中心“myhub”。 16:37:25 GMT-0600(中部标准时间)] SignalR: 与谈判 '/api/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D&clientProtocol=1.3'。
  • 然后它尝试连接到 SSE 端点,但失败了......
  • 16:37:30 GMT-0600(中部标准时间)] SignalR:此浏览器 支持SSE,跳过Forever Frame。
  • 16:37:31 GMT-0600(中部标准时间)] SignalR:打开长轮询请求...
  • 16:37:35 GMT-0600(中部标准时间)] SignalR:longPolling 超时 尝试连接。
  • 16:37:35 GMT-0600(中部标准时间)] SignalR:已中止 xhr 请求。

    (订阅集线器上的错误导致错误) SignalR 错误:错误:无法成功初始化传输。尝试为自动初始化指定不同的传输方式或根本不指定传输方式。

  • 16:37:35 GMT-0600(中部标准时间)] SignalR:正在停止连接。
  • 16:37:35 GMT-0600(中部标准时间)] SignalR:触发 ajax 中止异步 = 真的。

有什么想法吗?


因此,2.0.0 SignalR 中现在有一个 TransportConnectTimeout。听起来 SQL 背板会减慢连接过程,导致传输超时。

您可以通过以下方式修改服务器上的 TransportConnectTimeout:

GlobalHost.Configuration.TransportConnectTimeout = TimeSpan.FromSeconds(10);

因此,每当客户端尝试连接时,它都会遵守新的超时。

您也可以在客户端修改该值。修改后,客户端获取 TransportConnectTimeout 并将其添加到服务器,然后使用结果作为超时。修改客户端的方法如下:

$.connection.hub.transportConnectTimeout = 3000;

如果服务器的 TransportConnectTimeout 为 5 秒,则意味着客户端在尝试连接时将遵守 8 秒的超时窗口。

您可以选择修改其中一个值,或同时修改两个值,没关系,只要适合您的需要即可!

希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SignalR 2 长轮询“协议”请求在未本地运行时超时 的相关文章

  • ASP.NET MVC 中的经典 ASP (C#)

    我有一个应用程序想要 最终 转换为 ASP NET MVC 我想要进行全面的服务升级 到 ASP NET 但想要使用当前的 ASP 内容来运行当前的功能 这样我就可以在对新框架进行增量升级的同时升级小部分 该站点严重依赖于不太成熟的 VB6
  • 以编程方式检查页面是否需要基于 web.config 设置进行身份验证

    我想知道是否有一种方法可以检查页面是否需要基于 web config 设置进行身份验证 基本上如果有这样的节点
  • 为什么要序列化对象需要 Serialized 属性

    根据我的理解 SerializedAttribute 不提供编译时检查 因为它都是在运行时完成的 如果是这样 那么为什么需要将类标记为可序列化呢 难道序列化器不能尝试序列化一个对象然后失败吗 这不就是它现在所做的吗 当某些东西被标记时 它会
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • 暂停下载线程

    我正在用 C 编写一个非常简单的批量下载程序 该程序读取要下载的 URL 的 txt 文件 我已经设置了一个全局线程和委托来更新 GUI 按下 开始 按钮即可创建并启动该线程 我想要做的是有一个 暂停 按钮 使我能够暂停下载 直到点击 恢复
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • 如何将“外部模板”与由同一类中的模板化成员使用的嵌套类一起使用?

    首先 一些背景信息 我尝试以 Herb Sutter 在他的解决方案中介绍的方式使用 Pimpl 习语 得到了 101 http herbsutter com gotw 101 这在头文件中看起来像这样 include pimpl h h
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • 为什么我不应该对不是由 malloc() 分配的变量调用 free() ?

    我在某处读到 使用它是灾难性的free删除不是通过调用创建的对象malloc 这是真的 为什么 这是未定义的行为 永远不要尝试它 让我们看看当您尝试时会发生什么free 自动变量 堆管理器必须推断出如何获取内存块的所有权 为此 它要么必须使
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 获取 2 个数据集 c# 中的差异

    我正在编写一个简短的算法 它必须比较两个数据集 以便可以进一步处理两者之间的差异 我尝试通过合并这两个数据集并将结果更改放入新的数据集来实现此目标 我的方法如下所示 private DataSet ComputateDiff DataSet
  • g++ 对于看似不相关的变量“警告:迭代...调用未定义的行为”

    考虑以下代码strange cpp include
  • 在类的所有方法之前运行一个方法

    在 C 3 或 4 中可以做到这一点吗 也许有一些反思 class Magic RunBeforeAll public void BaseMethod runs BaseMethod before being executed public
  • 当前的 x86 架构是否支持非临时加载(来自“正常”内存)?

    我知道有关此主题的多个问题 但是 我没有看到任何明确的答案或任何基准测量 因此 我创建了一个处理两个整数数组的简单程序 第一个数组a非常大 64 MB 第二个数组b很小 无法放入 L1 缓存 程序迭代a并将其元素添加到相应的元素中b在模块化
  • 什么是 __declspec 以及何时需要使用它?

    我见过这样的例子 declspec在我正在阅读的代码中 它是什么 我什么时候需要使用这个构造 这是 Microsoft 对 C 语言的特定扩展 它允许您使用存储类信息来赋予类型或函数属性 文档 declspec C https learn
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项
  • 实例化 Microsoft.Office.Interop.Excel.Application 对象时出现错误:800700c1

    实例化 Microsoft Office Interop Excel Application 以从 winforms 应用程序生成 Excel 时 出现以下错误 这之前是有效的 但突然间它停止工作了 尽管代码和 Excel 版本没有变化 我
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop

随机推荐

  • 如何为 Nexus5 和 Nexus 5x 设置正确的边距

    我正在开发该应用程序 现在遇到了很大的问题 据我们所知 nexus 5 和 nexus 5x 使用相同的资源目录 xxhdpi 我的观点由于一些空白而被打破 即我必须为 nexus 5 设置 40dp 为 nexus5x 设置 65dp 那
  • 如何在 Eclipse PDE 中表达项目间依赖关系

    我正在寻找处理混合项目类型之间项目间依赖关系的最佳实践 其中一些项目是 eclipse 插件 OSGI 捆绑项目 RCP 应用程序 而其他项目只是普通的旧 java 项目 Web 服务模块 很少有 Eclipse 插件依赖于 Java 项目
  • Bootstrap 中占位符颜色变化

    如何更改 Bootstrap 中的占位符颜色 我尝试过以下代码 但不起作用 input webkit input placeholder color red input moz placeholder color red form cont
  • 异步 HttpHandler 和 WriteAsync

    我一直在 Ayende Rahien 的博客上尝试一些代码here http ayende com blog 72705 node cs它演示了使用异步 HttpHandler 来提高可以并发处理的请求数量 不幸的是我什至可以让基本的例子工
  • mapreduce 复合关键示例 - 未显示所需的输出

    作为mapreduce和hadoop世界的新手 在尝试了基本的mapreduce程序之后 我想尝试compositekey示例代码 输入数据集如下 国家 州 县 百万人口 美国 加利福尼亚州 阿拉米达 100 美国 加利福尼亚州 洛杉矶 2
  • 使用 List 类型的私有变量帮助 Java 中的抽象类

    自从我上次用 Java 编写代码以来已经有两年了 所以我的编码技能有点生疏了 我需要将数据 用户配置文件 保存在不同的数据结构中 ArrayList and LinkedList 并且他们都来自List 我希望尽可能避免代码重复 并且我还希
  • RabbitMQ 数据库文件

    我正在运行 RabbitMQ V 2 0 0 在 Linux 机器上 mnesia 库默认是当前的 但 Rabbit 在该目录中创建目录 例如 电子邮件受保护 cdn cgi l email protection 目录名称中的ip基于机器的
  • time.perf_counter() 或 time.process_time() 用于性能测量?

    我了解 time perf counter 测量经过的总时间 即使进程当前未运行 然而 time process time 仅测量进程实际运行的时间 如果我只是衡量一个功能的性能 这两个中哪一个是首选 由于我实际上对 CPU 花在处理其他进
  • 使用 python 的 eval() 与 ast.literal_eval()

    我遇到一些代码的情况eval 提出了一个可能的解决方案 现在我从来没有使用过eval 但在此之前 我已经了解到很多有关它可能造成的潜在危险的信息 也就是说 我对使用它非常谨慎 我的情况是我有用户提供的输入 datamap input Pro
  • Windows 进程什么时候会耗尽内存?

    在 Windows Server 2003 Enterprise Edition SP2 下 3GB 开关未启用 据我了解 一个进程的最大可寻址内存是 4GB 我可能是错的 那是 2GB 的私有字节和 2GB 的虚拟字节吗 当达到私有字节限
  • 如何使用 sqlalchemy 创建带有日期范围的排除约束

    我知道只需使用原始 sql 我就可以添加排除约束 如下所示 ADD CONSTRAINT unique daterange constraint EXCLUDE USING gist foo WITH daterange start dat
  • PyInstaller:模块未包含在 --onefile 中,但与 --onedir 一起工作正常

    我正在使用 PyInstaller 将我的应用程序捆绑到一个 exe 文件中 问题是它与 onedir 选项一起工作正常 但在使用 onefile 构建时找不到模块 onedir 和 onefile 在构建过程中都会说 lt gt INFO
  • 显示大型结果集

    这是我的问题 我需要存储一个lot日志消息 并认为将其保存在 SQLite3 数据库中以便能够轻松搜索和过滤它是明智的 我将在标准列表小部件中显示日志消息 使用 wxWidgets 该列表将有几列 并且可以由用户排序和过滤 现在 我不确定处
  • Excel 重命名其他计算机上的 Activex 控件

    我有一个带有 Activex 控件 组合框 命令按钮 选项按钮 复选框 的工作表 在我的计算机上 我已重命名所有控件 例如 CButtonPMR OButton Comp 等 但是当我在其他计算机上打开文件时 所有控件都被重命名为默认的默认
  • 在非 Windows 平台(Linux 或 Mac)上使用 Python 处理 Access 数据库

    我想访问 Microsoft Access 数据库中的数据 我有一些 accdb 和 mdb 文件 想用 Python 读取它们 根据我的研究 pyodbc只能在Windows平台上使用 但我正在Mac OS X上工作 我是Python新手
  • 使用弱密钥暴力破解 DES

    我正在学习密码学课程 但正在做一项作业 说明如下 明文 plain6 txt 已使用 DES 加密为 encrypt6 dat 使用 64 位密钥作为 8 个字符的字符串给出 64 位 其中每第 8 位被忽略 所有字符均为字母 小写或大写
  • 有没有一种好的方法将 std::minmax(a, b) 分配给 std::tie(a, b) ?

    std tie a b std minmax a b 我认为这是直观的代码 干净且易于理解 太糟糕了 它没有按预期工作 因为std minmax https en cppreference com w cpp algorithm minma
  • php:删除Windows上的共享内存

    这段代码 shmop delete shmop close 不删除共享内存 一个实验 shmid shmop open 1234 a 0 0 var dump shmid yields bool false 当然 但 shmid shmop
  • C++ Chrono 判断一天是否是周末?

    我的日期格式为年 int 月 int 和日 int 例如 2018 10 12 表示 2018 年 10 月 12 日 有没有办法可以使用 C Chrono 库和这些整数来确定我的 日期 是否是周末 如果没有 实现这一目标的最简单的替代方法
  • SignalR 2 长轮询“协议”请求在未本地运行时超时

    目前我有一个非常健谈的应用程序 需要单例的支持 参见下面的代码 我升级到 SignalR 2 0 并按照升级指南进行操作 但是将其部署到环境后 有时每个 协议 的所有请求都会失败 并且信号器会中断 而当它没有中断时 推送速度会非常慢从服务器