ОсновноеRadiotalkПользовательское
MPCHAT - CMS хостинг чатов для профессионалов
90   •   Посмотреть все темы

Переподключение к чату после перехода на другую вкладку и возврата

 

167
Стада @stada
Если любой чатланин нашего чата заходит в чат с мобильного устройства- телефона или планшета- то, при переходе на другую вкладку браузера, чат становится неактивным, происходит отключение. И при возврате- при открытии вкладки чата- происходит новое подключение к чату.
Как преодолеть это безобразие?
Может есть стандартная команда, которую следует вписать в шаблон "Чат внутри" для предотвращения этого?

Так же чатлан бесят периодические "По какой-то приине вы были отключены от чата. Через 10 секунд вы будете пвторно подключны к чату" 9..8..7..2...1."

202
Владимир @Лесной_зверь
Присоединяюсь к проблеме. Причем она появилась недавно. В главном чате при открытии новой вкладки и возвращению в чат появляется :По какой-то причине вы были отключены от чата. Через 10 секунд вы будете повторно подключены к чату. Браузер Гугл Хром. Еще бывает черный экран при заходе в чат с мобильного.
Стада, переподключение из-за того, что у тебя пользователи в чате с прокси сидят. Я уже поднимал вопрос, чтобы позволить пользователям с прокси сидеть в чате (поставить эту возможность в параметрах чата). Не у всех есть возможность купить хороший VPN.

167
Стада @stada
Происходит и при обычном заходе без прокси.

327
Геннадий @mychatik
Лесной_зверь пишет:

Присоединяюсь к проблеме. Причем она появилась недавно. В главном чате при открытии новой вкладки и возвращению в чат появляется :По какой-то причине вы были отключены от чата. Через 10 секунд вы будете повторно подключены к чату. Браузер Гугл Хром. Еще бывает черный экран при заходе в чат с мобильного.
Стада, переподключение из-за того, что у тебя пользователи в чате с прокси сидят. Я уже поднимал вопрос, чтобы позволить пользователям с прокси сидеть в чате (поставить эту возможность в параметрах чата). Не у всех есть возможность купить хороший VPN.

Это не прокси. Это грёбаный прожорливый гуглохром, который для "экономии ресурсов" останавливает обращение к неактивным вкладкам.

Почитай, может поможет: **********

202
Владимир @Лесной_зверь
Mychatic, спасибо помогло. По твоей ссылке есть решение проблемы. А возможно самостоятельно обмануть Гугл, вставив код в скрипты и в чат внутри?

5421
Глеб @Глебон
Лесной_зверь пишет:

Mychatic, спасибо помогло. По твоей ссылке есть решение проблемы. А возможно самостоятельно обмануть Гугл, вставив код в скрипты и в чат внутри?

Вы для начала узнайте почему Хром выгружает вкладки из оперативки в кэш и потом подумайте насколько это возможно и насколько это полезно для стабильности браузера. Спойлер: Да он их выгружает не просто так.

167
Стада @stada
Не помогает это.
Просто счетчик не включается и пересоединения с чатом не происходит.
Эту проблему надо решать внутри самого чата.
В других чатах я не замечал такой проблемы.

20090
Dimitry @Dimitry
Samsung S7 - Android 8 - Chrome
Тыкал минут 10 и вкладки открывал и сворачивал, так и не выкинуло вообще... может конечно на мобильном инете кидает, но на вайфае не получилось повторить...

167
Стада @stada
Это именно с вкладкой чата мп-чата происходит если зайти в чат.. потом открыть другую вкладку, и находиться несколько минут на ней.
После этого, если открыть вкладку чата , то там либо начнется переподключение в этот момент,
либо будет информация по состоянию на несколько минут назад (+сообщение Вы не в чате) -в зависимости от того включен в браузере параметр "освежать неактивные вкладки" или нет.
Оба эти варианта мешают, не позволяют видеть происходящее в чате.
Поверено на Samsung J4- 2018 Андроид-10, в следующих браузерах : Браузеры: Файрфокс, Хромиум, Айрон.

Отредактировано stada - 19.03.2019
20090
Dimitry @Dimitry
Ну что тут сказать, плохо что телефон отрубает чат, вот то самое переподключение и должно спасать по идее в таких случаях.
Возможно стоит его сделать более красивым и неприметным.

167
Стада @stada
Может есть какие- нибудь операторы, поддерживающие свернутую вкладку активной, которые можно вписать в текст программы чата?

167
Стада @stada
Как сделать чтобы переподключение не писало: Вы будете переключены через 10 сек.. через 9.. через 8.. 1.
А просто сразу за 1 секунду бы переподключало. Без вывода этой инфы о переподключении вообще.

20090
Dimitry @Dimitry
Таймер нужен, но его можно не отображать вообще...

167
Стада @stada
В таймере можно лимит 10 сек изменить на 1?
Как это сделать?
Как сделать чтобы переподключение не индицировалось?

20090
Dimitry @Dimitry
нельзя, будет сильно всех переглючивать, и это будет как атака на движок, забанить может...
ну до 5 сек на одном чате можно опустить, но массово нельзя это...

167
Стада @stada
Как изменить на 5 секунд?
А лучше- на 3.
Где какие изменения сделать надо для этого, что вписать?

20090
Dimitry @Dimitry
jscripts.dat где то внизу оно, можно искать по тексту...

167
Стада @stada
Где тут исправить?
Везде где 10 000 и 1000?

/* Проверка непрерывного соединения */

interval=window.setTimeout('wr("<font color=red>Не удалось подключиться к движку чата.<br>Попробуйте использовать новый современный браузер <a href=https://www.google.com/chrome target=_blank>Google Chrome</a>.</font>");',10000);


/* Загрузка движка сообщений */
document.getElementById("leftdiv").innerHTML='Загрузка ...';
loadengine();
}
var interval=window.setTimeout('wr("<font color=red>Чат не был загружен в установленное время, вероятно некоторые элементы страницы грузятся очень долго, <a href=# onclick=\'loadframes(); return false;\'>нажмите для продолжения</a> ...</font>");',10000);


/* [NEW ENGINES - обработка и функции новых движков] */
var engine="";
var engine_url="";
var engine_uri="";

/* Обработчик ошибок подключения */
function disconnect(type,error) {
if(type=="io") {wr("<font color=red>Ошибка подключения к серверу "+error+", подождите окончания загрузки ...</font>"); }
else if(type=="security") {return; wr("<font color=red>Ошибка безопасности при подключении к серверу "+error+", подождите окончания загрузки ...</font>"); }
else if(!interval) {
wr("<font color=red>По какой то причине Вы были отключены от сервера, переподключение через <b id=restarter>10</b> секунд ...</font>");
interval=window.setInterval("var obj=document.getElementById('restarter'); obj.innerHTML=obj.innerHTML-1; if(obj.innerHTML<=0) loadframes();",1000);
}
}

/* Анализ полученной строки и передача в функцию f() */
function r(msg) {
if(msg=="started") {document.getElementById("leftdiv").innerHTML=""; return;}
if(msg=="loaded") {up(); loaded=1; return;}
if(msg=="disconnected") { disconnect(); return;}
var a=msg.split('|');
f(a[0]*1,a[1]*1,a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]);
}


/* Определение и загрузка движков чата */
var ws="";
function loadengine() {
//fix for reconnect
if(ws) ws.onclose = function(e) {};

//load new engine
var browser=navigator.userAgent.match(/(Chrome|Firefox|Opera|Safari|MSIE|K-Meleon)( |\/)(\w+\.\w+)/i); if(!browser) var browser=new Array('','unknown','',0);
if(!engine_on) {
if(window.WebSocket) engine_on="WebSocket";
else { wr("<font color=red>Ваш браузер не поддерживает технологию WebSocket.<br>Попробуйте использовать новый современный браузер <a href=https://www.google.com/chrome target=_blank>Google Chrome</a>.</font>"); return; }
}
wr("<font color=green>Браузер <b>"+browser[1]+"/"+browser[3]+"</b>, движок <b>"+engine_on+"</b>, подключение ...</font>");
engine=engine_on;
engine_uri="/?chat="+chatlogin+"&sess="+myid+"&engine="+engine;
engine_url="http://"+engine_host+":"+engine_port+engine_uri;
if(engine=="WebSocket") {
if(location.protocol=="https:") ws = new WebSocket("wss://"+engine_host+":"+(engine_port+1)+engine_uri); else
ws = new WebSocket("ws://"+engine_host+":"+engine_port+engine_uri);
ws.onopen = function(e) {};
ws.onmessage = function(e) {eval(e.data.replace(new RegExp('<scr'+'ipt>','gm'),'').replace(new RegExp('</scr'+'ipt>','gm'),''));};
ws.onerror = function(e) {disconnect("io","websocket");};
ws.onclose = function(e) {window.setTimeout("disconnect();",1000);};
}

}

Отредактировано stada - 21.03.2019
20090
Dimitry @Dimitry
<b id=restarter>10</b> секунд

167
Стада @stada
Проблема "решается" подключением зарядного устройства к телефону.
Грёбаный Андроид..