在页面刷新时恢复 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 连接的主要内容,如果未能解决你的问题,请参考以下文章

是否有可以跨页面刷新保持聊天的 xmpp 客户端?

返回上一页时,保存恢复浏览记录(模拟返回不刷新)

javascript中的Websockets,页面刷新或导航到其他页面时连接终止[重复]

刷新页面时保存 vuex 数据

uniapp页面下拉刷新

页面样式错误,刷新又恢复问题处理