我有阅读教程,邮件列表和其他资源,以了解预绑定实际上是如何工作的。我用PHP发现了一些预绑定脚本,使用它,成功获得jid, rid, sid
但会话总是在页面刷新时丢失。
我在登录时进行预绑定,然后将rid, jid, sid
设置为会话cookie。
登录前预绑定成功。我能够发送消息。但是在页面重新加载时连接会丢失。
我已经明白,在RID必须递增的每个请求中,我已经编码了每次刷新时rid cookie加1。但我只是想问,我是否必须在每次刷新时预先绑定?或仅在登录时?
我已经看到了一些绑定每个页面重新加载的示例脚本。我无法在每个页面重新加载时进行预绑定,因为我忘记了密码,也无法将密码保存在cookie中的某处以便记住(因为这是一个安全问题)。
那么,预绑定真的有用吗?我使用openfire作为xmpp服务器。
这是我登录的代码
$xmppPrebind = new XmppPrebind('xxxx', $bosh_url, 'xxxx', false);
$xmppPrebind->connect($user->username, $password);
$xmppPrebind->auth();
$sessionInfo = $xmppPrebind->getSessionInfo(); // array containing sid, rid and jid
Session::put('bosh_url', $bosh_url);
Session::put('bosh_jid', $sessionInfo['jid']);
Session::put('bosh_sid', $sessionInfo['sid']);
Session::put('bosh_rid', $sessionInfo['rid']);
成功验证用户后,我也将他/她登录到openfire服务器。