【问题标题】:How can i disconnect in SignalR as my Mobile Data Connections gets off当我的移动数据连接关闭时,我如何在 SignalR 中断开连接
【发布时间】:2015-01-25 00:01:13
【问题描述】:

我已经使用 Android 应用程序实现了 ASP.NET SignalR。应用程序运行良好,但有一个问题。当我关闭数据连接时,SignalR 需要时间来断开在 onConnected() 时创建的连接 ID,因为它会尝试建立连接,直到达到断开连接的时间,它会尝试继续建立连接,因此周期约为 1.5分钟应用程序变得无用。我不想要。我想如果连接因失去连接而中断,应立即断开连接。有没有人解决这个问题。

【问题讨论】:

    标签: android asp.net signalr signalr-hub


    【解决方案1】:

    您应该创建自己的方法来停止此类事件的客户端连接。你可能会使用类似的东西

    connection.hub.stop();
    

    但是,如果您真的希望服务器不等待,您将调整断开连接超时,但如果您这样做,则必须相应地调整保持活动超时(如果手动设置)。

    断开连接超时

    www.asp.net/signalr/overview/guide-to-the-api/handling-connection-lifetime-events#disconnecttimeout

    此设置表示在传输连接丢失后引发 Disconnected 事件之前等待的时间量。默认值为 30 秒。当您设置 DisconnectTimeout 时,KeepAlive 会自动设置为 DisconnectTimeout 值的 1/3。

        // Wait a maximum of 30 seconds after a transport connection is lost
        // before raising the Disconnected event to terminate the SignalR connection.
        GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromSeconds(30);
    

    【讨论】:

    • 我尝试设置断开连接超时crackhaus,但随后signalR甚至没有建立连接,并且如果android的数据连接已关闭,则没有调用方法的方法。
    • 您将断开连接超时设置为什么?
    • 我将断开连接超时设置为 3 并关闭保活时间。
    • 除非您进行长轮询,否则您无法关闭保活时间,保活 - 此设置表示在通过空闲连接发送保活数据包之前等待的时间量。默认值为 10 秒。此值不得超过 DisconnectTimeout 值的 1/3。因此,如果您将断开连接超时设置为 3,则保持活动状态应为 1。
    • 我正在使用 Long pooling crackhaus。由于我在连接 Android 时遇到了一些故障,所以我爱上了最后一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多