javascript - SignalR 在一段时间后停止工作

标签 javascript asp.net signalr signalr-hub

出于某种原因,SignalR 将在短时间内(我估计大约 1 小时或更短时间)后停止调用客户端方法。我有一个显示警报的页面......一个非常简单的实现。这是Javascript:

$(function () {

    // enable logging for debugging
    $.connection.hub.logging = true;

    // Declare a proxy to reference the hub. 
    var hub = $.connection.alertHub;

    hub.client.addAlert = function (id, title, url, dateTime) {
        console.log(title);
    };

    $.connection.hub.start().done(function () {
        console.log("Alert Ready");
    });
});

如果我刷新页面,它会再次运行大约一个小时,然后将停止调用客户端事件 addAlert .日志中没有错误,没有警告。日志中的最后一个事件(对服务器的 ping 除外)是:

[15:18:58 GMT-0600 (CST)] SignalR: Triggering client hub event 'addAlert' on hub 'AlertHub'.



其中许多事件会在短时间内出现,然后停止,即使服务器仍应发送它们。

我在 Mac 和 SignalR 2.0.0 上使用 Firefox 35.0.1。

我意识到解决方法是每 10 分钟左右强制刷新一次页面,但我正在寻找一种方法来解决问题的根本原因。

我在服务器上启用了 SignalR 跟踪。重新刷新警报页面后,我在服务器上创建了一个“警报”并且警报通过了。我等了大约 10 分钟,我又试了一次,但还是失败了。以下是日志读取的内容(抱歉冗长,不确定相关内容):
SignalR.Transports.TransportHeartBeat Information: 0 : Connection b8b21c4c-22b4-4686-9098-cb72c904d4c9 is New.
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(b8b21c4c-22b4-4686-9098-cb72c904d4c9)
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(b8b21c4c-22b4-4686-9098-cb72c904d4c9)
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(b8b21c4c-22b4-4686-9098-cb72c904d4c9)
SignalR.Transports.TransportHeartBeat Verbose: 0 : KeepAlive(b8b21c4c-22b4-4686-9098-cb72c904d4c9)

还有几十个 SignalR.Transports.TransportHeartBeat消息,但没有别的。

最佳答案

我认为信号器的默认超时时间为 110 秒。您可以尝试 signalr disconnected 事件以重新连接它。

$.connection.hub.disconnected(function () {
            setTimeout(function () {
                startHub();
            }, 5000);
        });

在 startHub() 中,您可以再次开始连接。

引用:https://github.com/SignalR/SignalR/issues/3128

How to use SignalR events to keep connection alive in the right way?

关于javascript - SignalR 在一段时间后停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28683940/

相关文章:

javascript - 如何打开和关闭 google-maps 自动完成功能?

JavaScript-OpenERP : Modify/replace POS template view

ASP.NET Trace - 自定义 HttpModule

c# - 带有 Web 套接字的 SignalR

oauth-2.0 - 连接 Auth token 并将其传递到启用了 CORS 的 SignalR 集线器

ios - Pushing notifications to iOS 目前有哪些选项?

javascript - 在没有模型的情况下在 MVC 3 中进行验证

javascript - 是否有适用于 VS2010 的所见即所得 Web 编辑器扩展?

c# - 将 Asp 单选按钮属性(值)设置为字符串

c# - Ajax TimerControl 和实例变量?