2

我正在构建一个网络应用程序,用户可以在其中相互连接并聊天。所以每个聊天都有两个用户。我有一些关于 Pusher API ( http://pusher.com ) 的一般性问题。

第一个问题。Pusher 让您免费拥有 20 个并发连接 - 这是否意味着我可以同时进行 10 个正在进行的聊天?(每次聊天都在两个客户之间。)

第二个问题。我应该如何构建我的频道?每个聊天应该有一个频道吗?(如果有 10 个聊天,那么 10 个频道。)最好的方法是什么?

4

2 回答 2

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 这是他们谈论事件的页面

由于我们在这里使用了在线状态通道,因此您也可以获得有关您关心的用户的在线状态信息。

[编辑] 请注意,通过这种方式,订阅 user1 频道的所有用户都将收到有关在他的频道上发送的消息的通知,这是一种次优的方法!更好的方法是在每两个用户之间创建频道。有很多方法可以构建你的应用程序,但我认为前面的代码应该给你一个基本的想法。

选项 2:

创建一个“存在”的房间。每个用户都连接到它,然后通过“命名空间事件”发送私人消息,例如,user1 将绑定到 user1:message_received 上的 present_all 通道。这种方法的问题在于开销,但是如果您不期望流量很大,您可以使用这种方法,因为它更直接地编写代码。

或者在一种仅用于存在和一种用于交换消息之间创建一种混合方法。您应该查看 [https://pusher.tenderapp.com/kb/accountsbillingplanspricing/how-is-my-message-count-calculated][this] Pusher 详细解释他们如何为消息定价。

我希望这有帮助 !

于 2013-10-06T19:08:26.000 回答
1

这是否意味着我可以同时进行 10 个正在进行的聊天?

是的,根据他们的支持论坛帖子,“如何计算连接?” .

我应该如何构建我的频道?每个聊天应该有一个频道吗?

在最基本的设置中,每个聊天都有一个频道。但在大多数情况下,还有其他渠道用于传达其他用户的存在和其他功能。一个很好的起点是他们的实时聊天小部件教程

于 2013-09-27T18:39:53.587 回答