2014-11-07 3 views
0

Я использую Openfire 3.9.3 и создал приложение для веб-чата с strope.js. Когда меньшее количество пользователей на openfire было там, соединение было стабильным. но есть много пользователей, зарегистрированных в этом приложении. Пользователи не в сети, все еще мое соединение отключено повторно. Я снова подключаю on_disconnected(). Подключение производится, но опять-таки получить отсоединен сПовторное соединение Strophe + Openfire

NetworkError: 404 Invalid SID. - http://127.0.0.1:7070/http-bind/ 

это на стороне клиента дефект или дефект на стороне сервера? Как это решить?

ответ

2

Openfire обычно связывает клиента с регулярным интервалом, чтобы проверить, жив ли клиент. Когда клиент не отвечает в течение указанного таймаута, сервер сообщает, что клиент отключился.

Ошибка, которую вы получаете, является ошибкой страницы, которая в основном означает, что есть какая-либо проблема с вашим портом прослушивания или сетью.

Однако, поскольку вы используете адрес обратной связи, возможность сети исключается. Проверьте свой порт сервера как я (даже если код не указан для справки) считают, что у вашего клиента могут не возникнуть проблемы. Просто убедитесь, что адрес привязки вверх и вправо.

+0

Если я сменил сервер с Openfire на Erlang, то решит эту проблему? –

+0

Я предлагаю вам сначала попробовать изменить настройки интервала ping в консоли администратора Openfire, так как я работал с Openfire, и он отлично работает. –

+0

Я пробовал по умолчанию 360 секунд до 5 секунд, 10 секунд, 15 секунд, но все равно получаю ту же ошибку! –

0

У меня была такая же проблема в моем коде (я использую мою версию 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 сбрасывает все до каждой попытки подключения, поэтому у нее нет этой проблемы.

0

обновление keepalive на стороне клиента. Значение по умолчанию - 120 секунд.

Смежные вопросы