2013-05-13 60 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