2013-05-13 59 views
2

我们正在开发使用XMPP相互交流的特殊设备。我现在正在开发一个新的API,也应该与这些设备交谈。我面临的问题 - 所有这些设备都在为小组建立小组 - 针对每个客户,我们都有......因此,我们将为每组设备提供一个聊天室,或者为我们的每个客户提供一大堆设备;)如何使用SmackAPI发送广播消息?

但是现在.. api应该能够与每个连接的设备进行通信。我并不需要一个真正的广播机构 - 在年底,我会发出一个信息仅限于具体的设备..

但我不想登录到每个聊天室或者 - 运行的产品,超过4万客户和更多的设备,将结束一个有趣的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实时论坛我看了一个人谁“解决”它的,但他说的一切是...好漂亮“它的工作现在,我通过连接的功能sendpacket把我的信息” ,我的这种尝试似乎不工作:(

更好的想法/真正实现这将如何正常工作?

基本上我开始认为XMPP不会在实现这样的事情最好的技术所有 - 我希望我可以有一个真正的/基本的套接字实现,在这样的东西将是小菜一碟。但我不能选择 - 第三-party-system已经实现了XMPP ......没有足够的时间来改变所有这些......只是如果你想知道为什么我们在XMPP上试试这个功能..

+0

听起来像XMPP PubSub的情况。 – Flow 2013-05-14 06:04:31

回答

3

你似乎有一些相互矛盾的要求,现在想要发送到所有设备,但稍后只能发送一个特定设备。两种模型是同时需要的,还是您计划切换?如何做是不同的解决方案。

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

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

因此,您通过发送到相应的pubsub节点来控制广播和组消息。

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

+0

“现在发送到所有设备,但后来只有1个特定设备”对不起,我想我的描述太糟糕了;-)我不需要发送一些东西给所有设备 - 我将始终只发送命令到一个设备无论如何,pubsub似乎很有趣!如果我可以在客户端实现类似的东西,我会尝试一下;)谢谢! – jebbie 2013-05-14 07:14:30