我使用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中的这个问题吗?
答案 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
如何做:
请记住
我很抱歉,但我不知道如何在Strophe.js中分配资源名称,正如我在一些示例中看到的那样,程序员只需将其手动添加为字符串concat(user@server/resource
而登录)