2

我们正在开发使用 XMPP 相互通信的特殊设备。我现在正在开发的新 API 也应该与这些设备通信。我面临的问题 - 所有这些设备都在建立小团体 - 对于我们拥有的每个客户......所以我们将为每组设备拥有一个聊天室,或者为我们的每个客户拥有他的一堆设备;)

但是现在.. api 应该能够与连接的每个设备对话。我不需要真正的广播机制 - 最后,我只会向一个特定的设备发送消息..

但我也不想登录每个聊天室——运行一个拥有超过 40k 客户和更多设备的产品,将以一个有趣的 api 结尾,即在启动时打开超过 40k 聊天室......即使不'还没有尝试过,我无法想象这样的应用程序会运行良好......即使我们可以在几年内拥有数百万客户......我不喜欢会随着数量线性增长的解决方案客户,如果您知道我的意思:/

现在,基本上我正在考虑一个解决方案,我可以使用基本的 XMPPConnection 来完成我的工作。

MyCustomMessage msg = new MyCustomMessage();
msg.setTo("*"); // don't know what to address, i want to send it to "all"
msg.setFrom("ThatAPI"); // just a string telling that is sent from my java api ;)

msg.setEvent(event); // stuff that is coming through the parameters of the method where this code is inside
msg.setCustomStanza(data); // same here

connection.sendPacket(msg); // my try to send it to all till now..

在 Ignite Realtime Forums 的某个地方,我读到一个人“解决”了它,但他所说的一切都是“它现在正在工作,我通过连接的 sendPacket 推送我的消息”......好吧,我的尝试似乎没有去工作 :(

任何更好的想法/实际实现如何才能正常工作?

基本上我开始认为 XMPP 根本不会是实现这样的事情的最佳技术 - 我希望我可以有一个真正/基本的套接字实现,这样的事情将是小菜一碟.. 但我不能选择- 第三方系统已经实现了 XMPP……没有足够的时间来改变这一切……如果你想知道为什么我们在 XMPP 上尝试这个……

4

1 回答 1

3

您似乎有一些相互矛盾的要求,因为您现在想发送到所有设备,但以后只发送到 1 个特定设备。是否同时需要两种型号,或者您打算切换?如何完成将是不同的解决方案。

至于您当前的方法,我认为pubsub比您的聊天室方法更有意义,因为它面向将通用消息传递给订阅者。

  • 您可以为每个客户设置一个 pubsub 节点,以将消息发送到他们的所有设备。
  • 至于对所有人的广播,您可以让所有设备订阅单个 pubsub 节点。

因此,您可以通过发送到适当的 pubsub 节点来控制广播和分组消息。

对于发送到特定设备,这只是发送到特定实体的 sendPacket,没有什么特别之处。

于 2013-05-13T17:09:02.823 回答