使用 Strophe 的多个资源的 ejabberd 连接

ejabberd connection for multiple resources using Strophe

我是 ejabberd 和 Strophe 的新手。我正在使用 strophe 客户端和 ejabberd xmpp 服务器开发网络聊天应用程序。

后端连接预绑定:

XMPPPrebind xmppPrebind = new XMPPPrebind(boshHost, xmppDomain,
                boshUri, resource, boshPort, useSsl, debug);
xmppPrebind.connect(username, password);
xmppPrebind.auth();
SessionInfo sessionInfo = xmppPrebind.getSessionInfo();

Attach connection in strophe on UI:

connection = new Strophe.Connection(BOSH_SERVICE);
connection.attach(userjid + '@' + domain, sid, rid, onConnect);
connection.addHandler(onMessage, null, 'message', null, null, null);
......

在页面加载时,我从后端建立新的 ejabberd 连接并获取 sid 和 rid。在 UI 上使用 sid 和 rid in strophe 附加连接。它工作正常,没问题。

但是当用户在浏览器中为同一用户打开新选项卡时,会导致新的 ejabberd 连接与新的 sid 和 rid,然后旧选项卡断开连接。

如何在两个选项卡或多个选项卡中保持活动连接,以便用户可以 send/receive 在所有选项卡中发送消息?

我在 google 上进行了搜索,但没有找到在网络聊天中启用此功能的步骤。 也试着理解:http://xmpp.org/extensions/xep-0280.html

我在这里被屏蔽了,请帮忙。 谢谢

您需要为每个浏览器选项卡生成一个新的唯一资源。按照设计,使用相同的资源名称将断开以前连接的资源。