在页面刷新时恢复 XMPP 连接
Posted
技术标签:
【中文标题】在页面刷新时恢复 XMPP 连接【英文标题】:Resuming XMPP connection upon page refresh 【发布时间】:2016-09-29 07:04:09 【问题描述】:我无法在页面刷新时保持连接。
最初在每次刷新时,Strophe 连接对象都会丢失。所以,我采取的第一种方法是在刷新时重新连接。
我将 JID、SID 和 RID 保存在 localStorage 中,发送带有保存详细信息的 strophe attach 调用。
AuthHandler.attach_params(jid_frm_storage, sid_frm_storage, rid_frm_storage);
附加回调在我拥有的实际 AuthHandler 对象中 创建并完美记录,这意味着可以假设 我的附加成功,但我仍然无法发送或接收 任何消息
我的第二种方法是我将最新的 RID 保存在 locastorage 中并使用它来附加,因为我在研究已经在线发布的 RID 经常更改的问题时了解到。 (尽管请注意,我仅在发送消息或接收消息时才保存 RID)。
我也尝试过发送出席信息。
ConnectionHandler.connection.send($pres());
但这里也没有运气!
在我的最后一种方法中,我重新授权,即我连接并重新登录,然后发送身份验证,仍然没有运气。
如何在刷新后恢复连接。为了重新连接并恢复相同的对话,我需要从 Strophes 结束时做些什么。
注意:我不太清楚 XMPP 在内部是如何工作的,但通过边做边学的方法,我已经能够做到这一点。我知道在推进之前等待并学习一点 xmpp 会很棒,但我现在负担不起,因为我们正在快速进行原型设计。
如果能详细解释完成此操作所需的步骤,将不胜感激。
【问题讨论】:
【参考方案1】:解决了这个问题:
解决此问题的最佳方法是将登录凭据保存在 localStorage 中(请注意,它可能不符合您的安全要求,但符合我的要求),然后再次建立正确的连接,但这次使用与以前相同的凭据。
【讨论】:
以上是关于在页面刷新时恢复 XMPP 连接的主要内容,如果未能解决你的问题,请参考以下文章