2013-10-09 2 views
0

У меня есть приложение для веб-чата. Я использую BOSH, Openfire и Strophe. Все работает отлично, за исключением того, что страница обновляется. Я сохраняю информацию пользователя (JID, RID, SID) с помощью файлов cookie до обновления страницы. Однако, когда соединение будет сброшено, все онлайн-пользователи будут отображаться, но когда вы отправляете сообщения клиенту в следующем порядке, он автоматически перейдет в UNAVAILABLE, хотя сеанс все еще жив.Клиент автоматически отключился после обновления страницы с помощью XMPP Strophe BOSH

EDIT:

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

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

+0

Вы можете оставлять запросы и ответы, сделанные после перезагрузки страницы? –

+0

Привет, фактический код или консольный трафик? – leeshin

ответ

2

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

Попробуйте обновить информацию о каждом запросе BOSH, который делает строфа. Это может быть сделано путем введения РИД-спасительный код метода xmlOutput объекта соединения:

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