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

时间:2015-11-16 13:54:28

标签: xmpp ejabberd 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。使用sid连接连接并在UI上删除strophe。它工作正常,没有问题。

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

如何在两个标签或多个标签中保持活动连接,以便用户可以在所有标签中发送/接收消息?

我在谷歌搜索但未找到步骤在网络聊天中启用此功能。 另请尝试理解:http://i.stack.imgur.com/xoR0s.png

我被封锁了,请帮忙。 感谢

1 个答案:

答案 0 :(得分:3)

您需要为每个浏览器标签生成新的唯一资源。根据设计,使用相同的资源名称将断开以前连接的资源。