.done()没有在signalR中重新连接被调用

时间:2013-09-04 15:38:32

标签: asp.net-mvc-4 signalr

在我的MVC4 ASP.NET网页上,我在javascript中有以下代码来处理与服务器的连接并重新连接到服务器(如果由于某种原因连接丢失了服务器)。

问题是$.connection.hub.start().done()没有被调用以响应$.connection.hub.start()重新连接(它仅在第一次发出时被调用)。这是我想知道的错误吗?如果没有,是否有相同的方法提醒客户start()已完成。

// Start the signalR connection and request the default page
$.connection.hub.start().done(function () {
    console.info("$.connection.hub.start().done");
    hubProxy.server.sendDefaultPage();
});


//if server goes away - reconnect to it
$.connection.hub.disconnected(function () {
    console.info("disconnected");
    setTimeout(function () {
        $.connection.hub.start();
    }, 5000); // Restart connection after 5 seconds.
});

1 个答案:

答案 0 :(得分:1)

您可以将连接启动逻辑放入函数中:

function startConnection() {
    // Start the signalR connection and request the default page
    $.connection.hub.start().done(function () {
        console.info("$.connection.hub.start().done");
        hubProxy.server.sendDefaultPage();
    });
}

//if server goes away - reconnect to it
$.connection.hub.disconnected(function () {
    console.info("disconnected");
    setTimeout(startConnection, 5000); // Restart connection after 5 seconds.
});

然后将在初始连接和重新连接上调用.done()回调。