我正在构建一个用户可以相互连接并聊天的Web应用程序。所以每个聊天都有两个用户。我有一些关于Pusher API的一般性问题,(http://pusher.com)。
第一个问题。 Pusher允许你免费提供20个并发连接 - 这是否意味着我可以同时进行10次持续聊天? (每次聊天都在两个客户之间。)
第二个问题。我应该如何构建我的频道?每次聊天应该有一个频道吗? (如果有10个聊天记录,那么10个频道。)最好的方法是什么?
答案 0 :(得分:5)
这是否意味着我可以同时进行10次持续聊天?
你实际上可以拥有更多。如果一个人只能对一个人说话,你就会有10个,但是你会受到计划中信息数量的限制。
我应该如何构建频道?每个应该有一个频道吗? 聊天吗?
这取决于您是否关心:谁始终在线,以及您是否希望减少Pusher用于优化您的计划的在线消息数量。
选项1:
每个用户订阅一个以他命名的频道并听取其事件。
user1 将订阅 presence-user1 频道并绑定到此频道上的* 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()
});
Pusher有非常好的文档和非常简洁的api the page where they talk about events
由于我们在此处使用展示渠道,您也可以获得有关您关注的用户的展示信息。
[编辑]请注意,通过这种方式,所有订阅了user1频道的用户都会收到有关其频道上发送的消息的通知,这是一种不理想的方式!更好的方法是在每两个用户之间创建通道。有很多方法来构建您的应用程序,但我认为之前的代码应该为您提供一个基本的想法。
选项2:
创建一个房间'在场 - 全部'。每个用户连接到的,然后通过“命名空间事件”发送私人消息,例如,user1将绑定到presence_all通道上的user1:message_received。这种方法的问题在于开销,但是如果你不期望大量的流量,你可以使用这个,因为它更直接的代码。
或者在两者之间创建一种混合方法,仅用于存在,另一种用于交换消息。你应该查看[https://pusher.tenderapp.com/kb/accountsbillingplanspricing/how-is-my-message-count-calculated][this] Pusher详细解释他们如何为他们的消息定价。
我希望这有帮助!
答案 1 :(得分:1)
这是否意味着我可以同时进行10次持续聊天?
是的,根据他们的支持论坛帖子,"How are connections counted?"。
我应该如何构建频道?每个应该有一个频道吗? 聊天吗?
在最基本的设置中,每个聊天都有一个频道。但在大多数情况下,还有其他渠道用于传达其他用户和其他功能的存在。一个好的开始是他们Tutorial for a Realtime Chat Widget。