使用Pusher / Pubnub创建好友列表功能

时间:2013-08-05 12:52:09

标签: javascript xmpp real-time pusher pubnub

我正在考虑从我自己的ejabberd服务器(XMPP)转移到Pusher或Pubnub(最好是Pusher)。我想知道使用这项技术重新创建名册功能的最佳方法是什么。

每个用户都有可变数量的人,他订阅了这些人并与他们聊天。

我可以想到两种方法,但我不知道哪种方式最好。

我可以单独订阅每个用户的存在,也可以将所有用户放在一个房间中并听取所有在线状态。

但是,如果用户数达到数千人,我可以想象它不是一个可行的解决方案。

您怎么看?

1 个答案:

答案 0 :(得分: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员工。对于你的问题'正在做千倍的可扩展'?我们每个频道的成千上万人都做得很好,所以我现在不用担心。