У меня была такая же проблема в моем коде (я использую мою версию Candy Chat), и проблема была в том, что я не вызывал BOSH _proto
версию _doDisconnect
вовремя.
_doDisconnect: function()
{
this.sid = null;
this.rid = Math.floor(Math.random() * 4294967295);
window.sessionStorage.removeItem('strophe-bosh-session');
},
Вы должны убедиться, что это называется, прежде чем ваш код вызывает _changeConnectStatus
функцию строфы для отключения. Или, по крайней мере, установить текущее соединение this.sid = null
.
Другими словами, вы должны удостовериться, что Strophe отменяет текущее значение «sid», поэтому следующий пинг не отправляет «sid» или новый (я думаю, что нет, но может быть новым). Если нет, ваша клиентская сторона в следующем «отправке» ping имеет в себе старое значение, даже если сервер теперь отключается. Затем сервер дает не очень информативную ошибку 404, которая на самом деле позволяет вам знать, что это соединение больше не действует (что, конечно же, я и хотел в первую очередь). Сорт, который пришел первым, проблема с курицей или яйцом.
Надежда, которая помогает немного с одной версией, почему эта ошибка возникает. Стандартная версия Candy Chat сбрасывает все до каждой попытки подключения, поэтому у нее нет этой проблемы.
Если я сменил сервер с Openfire на Erlang, то решит эту проблему? –
Я предлагаю вам сначала попробовать изменить настройки интервала ping в консоли администратора Openfire, так как я работал с Openfire, и он отлично работает. –
Я пробовал по умолчанию 360 секунд до 5 секунд, 10 секунд, 15 секунд, но все равно получаю ту же ошибку! –