我正在使用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;
}
});