我们正在开发一种消费硬件产品。每个设备都在中央网络服务器上注册,并且所有者还拥有一个与该设备相关联的用户帐户。所有者还可以选择与其他用户共享设备。
现在,为了解决通过防火墙等问题,我们正在使用 XMPP:用户使用 iOS/Android 应用程序访问他/她的设备。该应用程序连接到 XMPP 服务器,硬件设备也是如此。因此应用程序可以通过发送自定义 XMPP 节来访问设备。
目前设备和移动应用程序使用相同的 JID,因此设备将只允许来自与其使用的相同裸 JID 的消息。为了允许共享设备,我们计划改用名册:设备将获得自己的 JID(“hw381983829@thexmppserver.com”),并将接受其名册中所有 JID 的节。
我遇到的问题是用户、设备和设备共享数据存储在网络服务器上。我想在 XMPP 服务器上使用相同的信息:允许网络服务器上的所有用户和设备登录 XMPP,并且设备的名册与可以访问它的用户相同。可以通过 JSON API 访问此信息。
一种方法是在更改发生时对其进行镜像,但我不喜欢这个想法,因为有太多可能出错的步骤。
我能想到的最佳解决方案是让 XMPP 服务器使用 JSON API 而不是其内置数据库。它将是只读的,但这不是问题,因为所有注册和共享都应该在网络服务器上完成。
关于如何进行的任何想法?上述功能或多或少是我们所需要的:我们不需要 S2S、离线消息等。我们目前正在使用 Ejabberd,但 Prosody 或 Openfire 或许是更好的选择?