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

Javascript 使用Pusher/Pubnub创建好友列表功能,javascript,xmpp,real-time,pusher,pubnub,Javascript,Xmpp,Real Time,Pusher,Pubnub,我正在考虑从我自己的ejabberd服务器(XMPP)转移到Pusher或Pubnub(最好是Pusher)。我想知道使用这种技术重新创建花名册功能的最佳方法是什么 每个用户都有不同数量的人,他订阅了这些人的状态,并且可以与他们聊天 我可以想出两种方法,但我不知道哪一种是最好的 我可以单独订阅每个用户的状态信息,也可以将所有用户放在一个房间中并收听所有状态信息 然而,如果用户数量达到数千,我可以想象这将不是一个可行的解决方案 你觉得怎么样 (function(){ var p = PUB

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

每个用户都有不同数量的人,他订阅了这些人的状态,并且可以与他们聊天

我可以想出两种方法,但我不知道哪一种是最好的

我可以单独订阅每个用户的状态信息,也可以将所有用户放在一个房间中并收听所有状态信息

然而,如果用户数量达到数千,我可以想象这将不是一个可行的解决方案

你觉得怎么样

(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的员工。你的问题是“正在做什么?”?我们每个频道都有数千人,所以我现在不必担心这个问题。

定价如何?每个上网的人都会发送状态信息(因此一条信息会发送给数千名用户)。我的配额只需发送状态数据就可以了。Jordan,这里,你现在也会返回数千个uuid,这可能是一个非最优的情况,因为你只需要一小部分。Rakan,状态请求不计入价格。如果您有特殊用例,可以联系我们。大卫,这是一个很好的观点。如果您想开始对用户进行子集设置,您可以通过子通道或在应用程序逻辑中进行。因此,您将有一个全局加入/离开,您现在只能在子通道中运行,以防止返回大型数据集。