gpt4 book ai didi

angular - 如何在我的 Angular 项目上为 signalR 3.0 设置自定义 withAutomaticReconnect

转载 作者:行者123 更新时间:2023-12-05 06:09:44 28 4
gpt4 key购买 nike

我正在尝试自定义 SignalR 以尝试在 60 秒内以 3 秒的间隔重新连接

根据文档,withAutomaticReconnect 似乎接受一个实现 IRetryPolicy 接口(interface)的对象,该接口(interface)有一个名为 nextRetryDelayInMilliseconds 的方法。

这是我需要帮助的地方,但我不知道该怎么做。 ( typescript 很新)我尝试了以下示例,但在 elapsedMilliseconds 上出现代码错误:

属性“elapsedMilliseconds”在类型“number”上不存在

https://learn.microsoft.com/en-us/aspnet/core/signalr/javascript-client?view=aspnetcore-3.0#reconnect-clients

const connection = new signalR.HubConnectionBuilder()    
.withAutomaticReconnect({
nextRetryDelayInMilliseconds: retryContext => {
if (retryContext.elapsedMilliseconds < 60000) {
return 3000;
} else {
return null;
}
}
})
.build();

任何帮助将不胜感激

最佳答案

我不知道它是否对你有任何帮助,因为你的问题已经 5 个月大了,但由于我刚刚经历了写这篇文章的痛苦,所以我只是想添加它以供 future 任何人引用需要这个。

这是实现IRetryPolicy的对象:

var OneMinuteReconnectPolicy = (function () {

function OneMinuteReconnectPolicy() { }

OneMinuteReconnectPolicy.prototype.nextRetryDelayInMilliseconds = function (retryContext) {
return retryContext.elapsedMilliseconds < 60000 ? 3000 : null;
};

return OneMinuteReconnectPolicy;

}());

要使用它,您需要创建它的一个实例并将该实例传递给 withAutomaticReconnect,例如:

var reconnectPolicy = new OneMinuteReconnectPolicy();

connection = new signalR.HubConnectionBuilder()
.withAutomaticReconnect(reconnectPolicy)
.withUrl(chatHubUrl)
.build();

如果您想查看有关正在发生的事情的更多详细信息,您可以添加一行:

    .configureLogging(signalR.LogLevel.Information)

在最后一行 .build(); 的上方,以获得更详细的控制台日志记录。

在我的测试中,我没有每 3 秒重试一次,而是大约每 7 秒重试一次。我认为这是由于尝试连接到服务器时超时 4 秒。当此连接失败时,它会启动重新连接策略的 3 秒延迟。

关于angular - 如何在我的 Angular 项目上为 signalR 3.0 设置自定义 withAutomaticReconnect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64666198/

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