我正在构建一个网络应用程序,用户可以在其中相互连接并聊天。所以每个聊天都有两个用户。我有一些关于 Pusher API ( http://pusher.com ) 的一般性问题。
第一个问题。Pusher 让您免费拥有 20 个并发连接 - 这是否意味着我可以同时进行 10 个正在进行的聊天?(每次聊天都在两个客户之间。)
第二个问题。我应该如何构建我的频道?每个聊天应该有一个频道吗?(如果有 10 个聊天,那么 10 个频道。)最好的方法是什么?
我正在构建一个网络应用程序,用户可以在其中相互连接并聊天。所以每个聊天都有两个用户。我有一些关于 Pusher API ( http://pusher.com ) 的一般性问题。
第一个问题。Pusher 让您免费拥有 20 个并发连接 - 这是否意味着我可以同时进行 10 个正在进行的聊天?(每次聊天都在两个客户之间。)
第二个问题。我应该如何构建我的频道?每个聊天应该有一个频道吗?(如果有 10 个聊天,那么 10 个频道。)最好的方法是什么?
这是否意味着我可以同时进行 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 这是他们谈论事件的页面
由于我们在这里使用了在线状态通道,因此您也可以获得有关您关心的用户的在线状态信息。
[编辑] 请注意,通过这种方式,订阅 user1 频道的所有用户都将收到有关在他的频道上发送的消息的通知,这是一种次优的方法!更好的方法是在每两个用户之间创建频道。有很多方法可以构建你的应用程序,但我认为前面的代码应该给你一个基本的想法。
选项 2:
创建一个“存在”的房间。每个用户都连接到它,然后通过“命名空间事件”发送私人消息,例如,user1 将绑定到 user1:message_received 上的 present_all 通道。这种方法的问题在于开销,但是如果您不期望流量很大,您可以使用这种方法,因为它更直接地编写代码。
或者在一种仅用于存在和一种用于交换消息之间创建一种混合方法。您应该查看 [https://pusher.tenderapp.com/kb/accountsbillingplanspricing/how-is-my-message-count-calculated][this] Pusher 详细解释他们如何为消息定价。
我希望这有帮助 !
这是否意味着我可以同时进行 10 个正在进行的聊天?
是的,根据他们的支持论坛帖子,“如何计算连接?” .
我应该如何构建我的频道?每个聊天应该有一个频道吗?
在最基本的设置中,每个聊天都有一个频道。但在大多数情况下,还有其他渠道用于传达其他用户的存在和其他功能。一个很好的起点是他们的实时聊天小部件教程。