Я использую Signal-R Core, простую страницу чата. Я вошел в систему с разными клиентами, такими как браузер на ноутбуке, мобильный браузер на Android и IOS,
Я мог бы отправить сообщение всем клиентам, но когда мобильный браузер (только IOS) сворачивается, соединение Signal-R отключено,
Я пытался реализовать логику для повторного подключения. Идея состоит в том, чтобы установить флаг для вызываемого connection.close (), а затем запустить соединение, вызвав connection.start () для Window.focus (). Функция 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;
}
});