【问题标题】:How to send a broadcast message with SmackAPI?如何使用 SmackAPI 发送广播消息?
【发布时间】:2013-05-13 15:19:17
【问题描述】:

我们正在开发使用 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 论坛的某个地方,我读到一个人“解决”了它,但他所说的一切都是“它现在正在工作,我通过连接的 sendPacket 推送我的消息”......好吧,我的尝试这似乎不起作用:(

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

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

【问题讨论】:

  • 听起来像是 XMPP PubSub 的案例。

标签: java xmpp broadcast smack


【解决方案1】:

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

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

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

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

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

【讨论】:

  • “现在发送到所有设备,但以后只发送 1 个特定设备”对不起,我想我的描述太糟糕了 ;-) 我不需要向所有设备发送东西 - 我会一直仅将命令发送到一台设备...无论如何,pubsub 似乎很有趣!如果我可以在客户端实现类似的东西,我会试一试;)谢谢!
猜你喜欢
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
相关资源
最近更新 更多