重定向到新页面时出现问题

时间:2014-04-01 09:31:59

标签: jquery session xmpp session-state strophe

我正在使用Strophe连接网页上的XMPP用户,并在用户连接后(成功进行身份验证后)移动到新页面之前发送状态

这是我的代码:

if (status===Strophe.Status.CONNECTED){
        my_namespace.connection.send($pres());
            console.log('CONNECTION STATUS: CONNECTED');
            $(document).trigger('connected');

现在问题是一切都发生得太快了,一旦我被重定向到新页面并检查我在服务器控制台(Openfire)的存在,我看到自己离线了!为什么不将此状态发送到服务器?

我搜索找到一个解决方案,即将连接附加到新页面,我对javascript很新,我无法理解为什么我的同一连接也不会占用新页面?

成功连接后,我使用此代码重定向我的页面。

$(document).on('connected', function() {
    my_namespace.set_cookies();
    console.log('Cookies set after sending presence in connected function');
    console.log('Trying to redirect now');
    window.location = 'question_section.html';
    console.log('Redirected');
});

附加代码(将以前的连接添加到新页面)位于传入的html的头部:

<script type="text/javascript">
        $(function(){
            $(document).trigger('attach', cookie_data);
            console.log('Attach called from the head of new HTML');
        });
    </script>

PS:我成功了。我的jid,资源ID&amp;会话ID也已保存在cookie中。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

在您的已连接处理程序中,发送您的状态。

conn.send($pres({type: 'available'}).c('priority').t(1).up().tree());

创建一个侦听存在的处理程序

conn.addHandler(onPresence, null, 'presence');

一旦你回来,然后重定向到下一页。

var onPresence = function(presence){
    //do redirect
}

您应该启用日志记录并评估状态,可能不是您获得的(取决于您设置聊天的方式)。另外,请记住在更改页面时增加RID。