Iphone Safari浏览器中的SignalR连接失败被最小化。如何使其保持连接状态?或Tab处于活动状态时如何重新连接

时间:2019-05-20 07:39:17

标签: asp.net-core signalr asp.net-core-signalr

我正在使用Signal-R Core,这是一个简单的聊天页面。我使用其他客户端登录,例如笔记本电脑中的浏览器,Android和IOS的移动浏览器,

我可以向所有客户端发送消息,但是当移动浏览器(仅IOS)最小化时,Signal-R连接断开,

我尝试实现重新连接的逻辑。想法是在connection.close()上设置一个标志,然后通过调用Window.focus()上的connection.start()来启动连接。 Window.focus()函数正常工作。

在最小化浏览器1倍后,此值为1,仅在iPhone浏览器上。 场景:最初已连接,消息发送成功。 现在浏览器已最小化,然后再次打开并从iPhone客户端发送消息,现在失败了。 然后再次最小化并再次打开浏览器,从iPhone客户端发送,现在消息发送成功。

多次尝试。相同。


var flagConnection = true;

var connection = new signalR.HubConnectionBuilder().withUrl("/chatHub").build();
connection.on("BroadcastMessage", function ( user, message) {
    var encodedMsg =  user + ": " + message;
    var li = document.createElement("li");
    li.textContent = encodedMsg;
    $("#divChatMessages").append(li);
});

connection.start();

connection.onclose(function(change) {

    if(connection.connectionState == 0)
        flagConnection = false;
    else
        flagConnection = true;
});


window.addEventListener("focus", function(event) 
    { 
        if(flagConnection == false){
            connection.start();
            flagConnection = true;
        }
    });


0 个答案:

没有答案