信号器重试逻辑 .Net Core

2024-05-23

我们在 Signalr .Net Core 中遇到了重新连接问题,重新连接到 signalr-hub 的最佳实践是什么?

以下似乎是有关重新连接的最受尊敬的文章。但似乎已经过时了,不是吗?将 SignalR 2.0 .NET 客户端重新连接到服务器集线器的最佳实践 https://stackoverflow.com/questions/23375043/best-practice-for-reconnecting-signalr-2-0-net-client-to-server-hub


进行“重新连接”的最佳方法是WithAutomaticReconnect method.

因此,您可以使用内置的重新连接逻辑,而不是编写自己的重新连接逻辑。

首先,您必须删除当前的重新连接逻辑,然后添加.WithAutomaticReconnect()给你的HubConnectionBuilder.

现在你有两个选择:

默认行为:

该方法的默认值为TimeSpan[0, 2000, 10000, 30000, null],这意味着每次尝试重新连接失败后,它将等待 X (0, 2, 10, 30) 秒。一旦达到null,它将停止尝试。

您可以自定义这个数组,但它的末尾总是有一个空值,这使得如果您希望它无限尝试,它会变得不可靠。 这给我们带来了下一个选择:

自定义IRetryPolicy

An IRetryPolicy表示多少秒HubConnectionBuilder每次尝试失败后必须等待再次尝试重新连接。

此方法无限运行,直到连接恢复。

实施自定义IRetryPolicy:

public class RetryPolicyLoop : IRetryPolicy
{
    private const int ReconnectionWaitSeconds = 5;
    
    public TimeSpan? NextRetryDelay(RetryContext retryContext)
    {
        return TimeSpan.FromSeconds(ReconnectionWaitSeconds);
    }
}

这就是你的样子HubConnectionBuilder:

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

信号器重试逻辑 .Net Core 的相关文章

随机推荐

  • Base36 编码字符串?

    我一直在网上查找 但找不到解决此问题的方法 在 Python Ruby 或 Java 中 如何对以下字符串进行 Base 36 编码 nOrG9Eh0uyeilM8Nnu5pTywj3935kW 5 Ruby 以 36 为基数 s unpa
  • OWIN OnSendingHeaders 回调 - 读取响应正文

    这个问题与优秀有关answer https stackoverflow com a 17513249 1709870由优素福 我爱OnSendingHeaders打回来 我现在可以添加响应标头 而不必担心切换流 无论如何 这是我的问题 是否
  • 大于 2GB 的 Tensorflow 图

    我正在尝试优化一个大型张量流保存模型 其中包含 10MB saving model pb 和 16GB 变量 我尝试冻结我的图表并进行一些进一步的转换 我已按照步骤操作https medium com google cloud optimi
  • 大型跨平台软件项目的技巧/资源

    我将开始一个大型软件项目 涉及跨平台 GUI 和大量的数字运算 我计划用 C 和 CUDA 编写大部分应用程序后端 并用 Qt4 编写 GUI 我计划使用 Make 作为我的构建系统 这将是一个只有两名开发人员的项目 一旦我相对深入地了解它
  • 判断点是否在截锥体内

    我正在尝试找出确定一个点是否在截锥体内的最佳方法 我有一些工作 但不确定它是否太麻烦 也许我应该有一种更优雅 有效的方法来做到这一点 假设我想查明点 x 是否在截锥体内 一旦我知道了平截头体的 8 个点 4 个近点 4 个远点 的位置 我就
  • 如何使用 JAVA 代码以编程方式捕获线程转储?

    我想通过 java 代码生成线程转储 我尝试使用 ThreadMXBean 为此 但我没有以正确的格式获得线程转储 因为我们正在使用jstack命令 请任何人提供一些帮助 他们是否有其他方式获取线程转储 使用任何其他 API 我想要的线程转
  • PHP Github Pull 脚本错误“权限被拒绝(公钥)”

    我已经设置了一个 PHP 脚本来执行 GitHub 拉取 这包含在我的 Github 文件夹中 home mysite public html github github pull php 我的服务器已经有 SSH 公钥 就像我执行git
  • 为什么在 R 中绘图时,hovertemplate 无法正确显示某些数据点

    mydat2 lt data frame subject c math english chemistry score c 80 50 65 class c A B A count c 50 60 70 library plotly plo
  • 如何将第一个选项设置为选定的选项,其中选项是从选择框 anular 4 中的循环构建的

    我曾从事 Angular 4 项目 在这个项目中 我需要将第一个选项设置为选定的 其中所有选项都是通过循环动态创建的 html代码
  • 可注入的“PlatformLocation”需要使用JIT编译器进行编译,但“@angular/compiler”不可用

    我的 Angular 应用程序通过 Node 16 13 0 提供服务 更新到 Angular 13 后 我收到以下错误 可注入 class PlatformLocation 的 JIT 编译失败 文件 Users btaylor work
  • 合并两个ActiveRecord数组并按created_at排序

    books Book find all articles Articles find all 通过阅读来自http guides rubyonrails org layouts and rendering html http guides
  • INNER/RIGHT/LEFT JOIN 怎么会比 FULL JOIN 慢 14 倍?

    我有一个查询 使用 FULL JOIN 需要 2 5 秒 使用 INNER RIGHT 或 LEFT JOIN 需要 40 秒 这是查询 子查询 完成两次 本身只需要 1 3 秒 SELECT T1 time T1 Total T1 rn
  • .bind 和其他事件之间的区别

    以下代码行之间有什么区别 或者它们只是编写同一内容的两种不同方式 p click function some code here p bind click function some other code here 我是否过于简化了 因为如
  • 将 gevent 与 python xmlrpclib 结合使用

    是否可以将 python 的标准库 xmlrpclib 与 gevent 一起使用 目前我尝试使用monkey patch all 但没有成功 from gevent import monkey monkey patch all impor
  • (Java) App Engine 中的静态文件无法访问

    The 示例文档 http code google com appengine docs java gettingstarted staticfiles html表示您只需将文件放在 war 或子目录 中 并且应该可以从主机访问它们 只要它
  • ln: /usr/lib/libssl.dylib: OSX 不允许操作

    我正在尝试创建一个到 usr lib 的符号链接 但我似乎没有权限 包含在 root 中 系统返回不允许该操作 在 Yosemite 上我工作得很好 但在 El Capitan 上却坏了 有人知道我能做什么吗 我在使用 Sublime te
  • 使用 join 更新 Linq

    我有这两个合集 var materials new List
  • PHP 电子邮件验证[重复]

    这个问题在这里已经有答案了 For PHP最好的电子邮件验证方法是什么preg NOT ereg因为它是已弃用 删除 I don t需要检查该网站是否存在 这不像最高安全性 我找到了很多方法ereg但它们 显然 不是好的做法 我建议你使用F
  • 并行 dask for 循环比常规循环慢?

    如果我尝试使用 dask 并行化 for 循环 它最终会比常规版本执行得慢 基本上 我只是按照 dask 教程中的介绍性示例进行操作 但由于某种原因它在我这边失败了 我究竟做错了什么 In 1 import numpy as np from
  • 信号器重试逻辑 .Net Core

    我们在 Signalr Net Core 中遇到了重新连接问题 重新连接到 signalr hub 的最佳实践是什么 以下似乎是有关重新连接的最受尊敬的文章 但似乎已经过时了 不是吗 将 SignalR 2 0 NET 客户端重新连接到服务