Java 如何使用SmackAPI发送广播消息?

Java 如何使用SmackAPI发送广播消息?,java,xmpp,broadcast,smack,Java,Xmpp,Broadcast,Smack,我们正在开发使用XMPP相互通信的特殊设备。我现在正在开发的一个新API也应该与这些设备进行通信。我面临的问题是——所有这些设备都在建立一个小团体——针对我们的每个客户。。。因此,我们将为每一组设备,或为每一位拥有一组设备的客户,提供一个聊天室;) 但是现在。。api应该能够与连接的每个设备进行通信。我不需要真正的广播机制-最终,我将只向一个特定的设备发送消息 但我也不想登录每个聊天室——运行一个拥有超过4万名客户和更多设备的产品,最终会出现一个有趣的api,即在启动时打开超过4万个聊天室。。。

我们正在开发使用XMPP相互通信的特殊设备。我现在正在开发的一个新API也应该与这些设备进行通信。我面临的问题是——所有这些设备都在建立一个小团体——针对我们的每个客户。。。因此,我们将为每一组设备,或为每一位拥有一组设备的客户,提供一个聊天室;)

但是现在。。api应该能够与连接的每个设备进行通信。我不需要真正的广播机制-最终,我将只向一个特定的设备发送消息

但我也不想登录每个聊天室——运行一个拥有超过4万名客户和更多设备的产品,最终会出现一个有趣的api,即在启动时打开超过4万个聊天室。。。即使你还没有尝试过,我也无法想象像这样的应用程序会运行良好。。。尽管几年内我们可以拥有数百万的客户。。我不喜欢与客户数量成线性增长的解决方案,如果你知道我的意思的话:/

现在,基本上我正在考虑一个解决方案,我可以使用基本的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论坛的某个地方,我读到一个人“解决”了这个问题,但他说的每句话都是“它现在工作了,我通过连接的发送包传递我的信息”。。。好的,很好,我的尝试似乎不起作用:(

有没有更好的想法/实际的实施方法?这将如何运作


基本上,我开始认为XMPP根本不是实现类似目标的最佳技术-我希望我可以有一个真正的/基本的套接字实现,其中类似的东西将是小菜一碟…但我不能选择-第三方系统已经实现了XMPP…没有足够的时间来改变所有这些…如果你想知道为什么我们要在XMPP上尝试此功能。

您似乎有一些相互冲突的要求,您希望现在发送到所有设备,但以后只发送一个特定的设备。这两种型号是同时需要的,还是您计划切换?如何执行这两种方式将是不同的解决方案

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

  • 您可以为每个客户设置一个pubsub节点,以便向所有客户发送消息 他们的设备
  • 对于向所有人广播,您可以使所有设备 订阅单个pubsub节点
因此,您可以通过发送到适当的pubsub节点来控制广播和分组消息


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

听起来像XMPP PubSub的例子。“现在发送到所有设备,但以后只发送一个特定设备”抱歉,我想我的描述太糟糕了;-)我不需要发送一些东西到所有的设备-我总是只发送命令到一个设备。。。无论如何,pubsub看起来很有趣!如果我能在客户端实现类似的东西,我会尝试一下;)谢谢