我使用Signalr来显示服务器上发生的长进程的实时更新。

这样的想法是,用户可以看到已处理了超出设置数量的项目。

AJAX发布请求通过控制器将调用发送到服务器以启动该过程,在此过程的最后返回部分视图,并使用此结果填充容器元素。

$("body").on("click", "#process-button", function ()
{
    var hub = $.connection.myHub;

    $.connection.hub.start().done(function ()
    {
        connectionId = $.connection.hub.id;

        $.ajax({
            type: "POST",
            url: "StartProcess/MyController"+ "&connectionId=" + connectionId,
            cache: false,
            success: function (data) {
                $(".modal #container").empty();
                $(".modal #container").html(data);
            }
        })
    });


    hub.client.sendMessage = function (message) {
        $(".modal #container").empty();
        $(".modal #container").append(message);
    }
});


出于法律原因,我无法显示控制器ActionResult方法,但我100%确信问题出在上述代码中。我只是不知道为什么。

我已经在Chrome,Firefox,IE10、11和edge上进行了很好的测试(大概是因为他们使用websockets),但是在使用ForeverFrames的IE9上,进程却停滞了。

值得注意的是,我通过IE11使用文档模式仿真器测试了IE9。

这是网络跟踪的输出。

javascript - Internet Explorer 9和ForeverFrames的Signalr轮询问题-LMLPHP

请对已涂黑的条目进行借口,尝试不广播代码。

如您所知,我突出显示了请求仅在何处停止,据我所知,因此未返回部分视图。

有人遇到过吗?

最佳答案

您可以尝试添加

$.connection.hub.start({ transport: ['webSockets', 'serverSentEvents', 'longPolling'] });


为了您的脚本禁止使用ForeverFrames。

关于javascript - Internet Explorer 9和ForeverFrames的Signalr轮询问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37305383/

10-10 07:26