我正在考虑从我自己的 ejabberd 服务器(XMPP)迁移到 Pusher 或 Pubnub(最好是 Pusher)。我想知道使用这项技术重新创建名册功能的最佳方法是什么。
每个用户都有不同数量的人,他订阅了这些人的存在并且可以与他们聊天。
我可以想到两种方法,但我不知道哪种方法最好。
我可以单独订阅每个用户的出席信息,也可以将所有用户放在一个房间里并收听所有出席信息。
但是,如果用户数量达到数千,我可以想象这将不是一个可行的解决方案。
你怎么看 ?
我正在考虑从我自己的 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 的员工。你的问题是“做数千个可扩展的”吗?每个频道我们已经完成了超过数千人的工作,所以我暂时不用担心。