【问题标题】:signalr catching keep alive failure/disconnects信号器捕获保持活动故障/断开连接
【发布时间】:2013-02-28 21:29:10
【问题描述】:

所以我的信号器工作正常,将我的数据推送到客户端没有问题。我使用 ajax 调用实现了自己的保持活动状态以保持连接活动。但我一直在阅读,并且有一个我正在尝试的选项:

GlobalHost.Configuration.KeepAlive = TimeSpan.FromSeconds(30);

但我的问题是,如果它无法发送保持活动状态,你如何在 javascript 端捕获它?

如果这是服务器推送数据以保持连接处于活动状态,这是否意味着客户端永远不会知道它是否失败了?

或者javascript会抛出connection.error吗?

我希望能够拔出客户端的网络电缆,并且在 XX 秒后它显示一条消息说网络连接丢失。 Atm 我可以使用我的 ajax 调用来进行这项工作,但这是否可以使用 keepalive 值?

【问题讨论】:

    标签: signalr


    【解决方案1】:

    这已经为除 LongPolling 之外的所有传输实现了。

    默认情况下,如果 JS 客户端错过了 2 次保持活动,它将重新连接。

    如果你想加入重新连接事件,你可以这样做:

    $.connection.hub.reconnecting(function() {
        // Your logic
    });
    

    如果您想绑定表明连接可能会重新连接的事件,可以这样做:

    $.connection.hub.connectionSlow(function() {
        // Your logic
    });
    

    请记住,默认情况下,客户端将在给定时间后停止尝试重新连接,并将转为断开连接状态以避免不必要的重新连接事件。如果您想确保您的连接始终保持连接,即使有停机时间,请在此处查看我的答案:Client Reconnection

    【讨论】:

    • 我无权访问这些事件,我使用的是信号器 0.5.3。我尝试使用事件 stateChanged 但它似乎只在某些时候起作用......
    • 您需要更新到 1.0.0。 0.5.3 不再受支持。抱歉 =(。永远重新连接的场景在 0.5.3 中不可用
    • 您好,我已更新到 1.0.0 并且可以使用,谢谢。决定使用 hub.statechanged 事件来。但我遇到的唯一问题是它会在页面更改时触发。
    • 只要连接状态发生变化,就会触发集线器状态更改事件。所以发生的事情是,当您更改页面时,您的连接会变为断开连接状态,因此会触发 statechanged 事件。
    猜你喜欢
    • 1970-01-01
    • 2018-10-29
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 2021-12-22
    • 1970-01-01
    相关资源
    最近更新 更多