Xmpp,Strophe Js:同一用户的多个活动连接

时间:2017-01-13 13:50:38

标签: ios xmpp openfire strophe

我使用xmpp + openfire + strophe实现了网络聊天。在同一个openfire和xmpp服务器上,我们也开发了IOS聊天。

我面临以下问题。

让我们说用户A在IOS应用程序中与xmpp连接,用户A与用户B聊天。 现在,同一用户A使用strophe将网络聊天连接到xmpp,用户B将消息发送给用户A,然后用户A将仅在网络聊天连接中显示消息。

现在用户A在IOS中与xmpp连接并且用户B发送消息,然后用户A将仅在IOS应用中获取消息,而不是在网络聊天中。

用户A是否有可能在所有创建的连接上都有消息?

用户是否可以拥有多个xmpp连接,并且所有连接都能够向另一个用户发送消息并能够在用户的所有连接上获取消息?

你能帮我解决Strophe Js和IOS中的这个问题吗?

1 个答案:

答案 0 :(得分:2)

您可以通过设置不同的资源https://wiki.xmpp.org/web/Jabber_Resources)来管理它。 每个设备必须声明一个不同的资源(" myPc"," android"," iphone"," ipad"," Spark&# 34;,它只是一个任意的字符串)。

必须配置Openfire才能管理多个资源(服务器 - >服务器设置 - >资源政策)。

编辑:Openfire还有一个基于优先级的传送系统,它选择最高优先级的资源并仅向其发送消息。 (一个很好的讨论:https://community.igniterealtime.org/thread/53377) 通过设置属性启用:

route.all-resources

true

根据这个问题,你也需要 Openfire server, multiple connection, route.all-resources doesn't work

route.really-all-resources

设置为

true

如何做:

  • 通过数据库,添加" ofProperty"表两个属性
  • 或通过openfire网络客户端 - >服务器 - >服务器管理器 - >系统 属性(在页面底部添加)。

请记住

  1. 状态具有优先级(介于-128和128之间的数字),默认值 它是1.小心地改变这个号码。
  2. 当然,客户必须在发送时包含资源 消息(这是你的情况,但要注意保持正确 行为)
  3. 我很抱歉,但我不知道如何在Strophe.js中分配资源名称,正如我在一些示例中看到的那样,程序员只需将其手动添加为字符串concat(user@server/resource而登录)