Клиент автоматически стал недоступен после обновления страницы с помощью XMPP Strophe BOSH

У меня есть приложение для веб-чата. Я использую BOSH, Openfire и Strophe. Все работает отлично, за исключением случаев, когда страница обновляется. Я сохраняю информацию о пользователе (JID, RID, SID) с помощью файлов cookie перед обновлением страницы. Однако, когда соединение сбрасывается, все онлайн-пользователи будут отображаться, но когда вы отправляете сообщения клиенту в следующем порядке, оно автоматически становится НЕДОСТУПНЫМ, хотя сеанс все еще активен.

РЕДАКТИРОВАТЬ:

$(window).bind('onunload', function () {
    if(connection !== null){
        connection.pause();
        set_cookies();
    }else{
        del_cookies();
    }
});

После обновления соединение должно возобновиться с помощью функции Attach(). список всех онлайн-контактов будет отображаться, но через несколько секунд он станет недоступен.


person leeshin    schedule 09.10.2013    source источник
comment
Можете ли вы публиковать запросы и ответы, сделанные после перезагрузки страницы?   -  person Milos Jovanovic    schedule 10.10.2013
comment
привет фактический код или консольный трафик?   -  person leeshin    schedule 11.10.2013


Ответы (1)


Вы можете решить эту проблему, сохранив рид при создании соединения, рид обновляется при каждом запросе, сервер xmpp обычно имеет какое-то окно для ридов, поэтому важно обновлять риды в файлах cookie.

Попробуйте обновить rid при каждом запросе BOSH, который делает strophe. Это можно сделать, вставив код сохранения ридов в метод xmlOutput объекта соединения:

conn.xmlOutput = function(body) {
    var rid = $(body).attr('rid');
    // save rid to cookies
}
person dym    schedule 20.10.2013