2013-08-05 35 views
0

我正在考慮從我自己的ejabberd服務器(XMPP)移動到Pusher或Pubnub(最好是Pusher)。我想知道使用這種技術重新創建名冊功能的最佳方式是什麼。使用Pusher/Pubnub創建好友列表功能

每個用戶都有可變數量的人,他所訂購的人數以及他可以與之聊天的人數。

我可以想到兩種方法,但我不知道哪種方法最好。

我可以單獨訂閱每個用戶的存在,也可以將所有用戶放在同一個房間內並聽取所有存在。

但是,如果用戶數量達到成千上萬,我可以想象它不是一個可行的解決方案。

您認爲如何?

回答

0
(function(){ 
    var p = PUBNUB.init({ 
     'subscribe_key':'foo', 
     'publish_key':'bar' 
    }) 
    var do_leave = function(message,env,channel){ 
     //leave code here 

    }; 
    var do_join = function(message,env,channel){ 
     //join code here 
    }; 
    var do_timeout = function(message,env,channel){ 
     //timeout code here 

    }; 
    p.subscribe({ 
     channel : "hello_world",      // CONNECT TO THIS CHANNEL. 
     message : function(message, env, channel) {}, // RECEIVED A MESSAGE. 
     presence : function(message, env, channel) { 
      if(message.action === 'leave'){ // handle leave 
       do_leave.apply(this,arguments); 
      } 
      else if (message.action === 'join'){ // handle join 
       do_join.apply(this,arguments); 

      } 
      else{//timeout 
       do_timeout.apply(this,arguments); 
      } 
     } 

    }); 

    // to get the current state use the here_now request 
    p.here_now({ 
    channel : 'hello_world', 
    callback : function (message) { console.log(message) } 
    }); 
})(); 

完全披露我是PubNub員工。你的問題是'做數千可擴展'?我們每個頻道的成績都超過了數千人,所以我現在不會爲此擔心。

+0

價格如何?每個上線的人都會發送狀態(所以有一條消息傳送給數千個用戶。)我的配額只會通過發送狀態數據而結束。 – user1128896

+0

約旦,here_now將返回成千上萬的uuid,當您需要的只有少數uuid時,它可能不是最優的 – davidkomer

+1

Rakan,存在請求不計入定價。如果您有特殊使用案例,請聯繫我們。 大衛,這是一個很好的觀點。如果你想開始對用戶進行子集化,你可以通過子渠道或應用程序邏輯來完成。因此,您將擁有一個全局加入/讓您只能在子渠道中運行here_now,以防止返回大型數據集。 –