我正在建立一个网络应用程序,用户可以相互连接和聊天。所以每次聊天都有两个用户。我有一些关于Pusher (http://pusher.com)的一般性问题。
第一个问题。Pusher让你免费拥有20个并发连接--这是否意味着我可以同时进行10个正在进行的聊天?(每次聊天都是在两个客户机之间进行的。)
第二个问题。我该如何安排我的频道?每次聊天应该有一个频道吗?(如果有10个聊天渠道,就有10个频道。)最好的办法是什么?
发布于 2013-10-06 19:08:26
这是否意味着我可以同时进行10次聊天?
你可以拥有更多的东西。如果一个人只能和一个人说话,你就会有10个,但是你会受到计划中的信息数量的限制。
我该如何安排我的频道?每次聊天应该有一个频道吗?
这取决于你是否关心是否知道:谁一直在线,以及你是否想减少Pusher花在优化你的计划上的信息数量。
选项1 :
每个用户订阅一个以他名字命名的频道,并侦听其事件。
user1将订阅presence-user1 1通道并绑定到该通道上的*message_received*事件:
var channel = pusher.subscribe('user1');
channel.bind('message_received', function(message){
console.log('Message received : ');
console.log(message);
});当user1想联系user2时,他们只需触发一个*message_received*并将消息和一些元数据传递给它:
var channel2 = pusher.subscribe('user2');
channel2.trigger('message_received',{
message:'hey',
sender:'user1',
sent_on:helpers.date()
});推手有非常好的文档和非常整洁的api --这里是他们谈论事件的那一页
由于我们在这里使用的是存在通道,所以您也可以获得有关您所关心的用户的存在信息。
编辑注意,通过这种方式,所有订阅user1频道的用户都将被告知在他的频道上发送的消息,这是一种次优的方式!一个更好的方法是在每两个用户之间创建通道。构建应用程序的方法有很多种,但我认为前面的代码应该给您一个基本的想法。
备选方案2 :
创建一个房间“所有的存在”。每个用户都连接到它,然后通过“命名空间事件”发送私有消息,例如,user1将绑定到presence_all通道上的user1:message_received。这种方法的问题在于开销,但是,如果您没有预料到大量的通信量,您可以使用这个方法,因为它更直接地处理代码。
或者在一种仅用于存在和一种用于交换消息的方法之间创建一种混合方法。您应该检查https://pusher.tenderapp.com/kb/accountsbillingplanspricing/how-is-my-message-count-calculated their,详细解释它们是如何定价消息传递的。
希望这能帮上忙!
发布于 2013-09-27 18:39:53
这是否意味着我可以同时进行10次聊天?
是的,根据他们的支持论坛帖子,“联系是如何计算的?”。
我该如何安排我的频道?每次聊天应该有一个频道吗?
在最基本的设置中,每个聊天都有一个通道。但在大多数情况下,有额外的渠道用于通信其他用户的存在和其他功能。一个很好的起点是他们的实时聊天Widget教程。
https://stackoverflow.com/questions/19051795
复制相似问题