2013-09-27 4 views
2

Я создаю веб-приложение, где пользователи могут подключаться друг к другу и общаться в чате. Поэтому в каждом чате есть два пользователя. У меня есть некоторые общие вопросы относительно Pusher API, (http://pusher.com).Pusher.com - как пользоваться каналами

Первый вопрос. Pusher позволяет вам иметь 20 одновременных подключений бесплатно - означает ли это, что я могу иметь 10 текущих чатов одновременно? (Каждый чат находится между двумя клиентами.)

Второй вопрос. Как мне структурировать каналы? Должен ли быть один канал в чате? (Так что 10 каналов, если бы было 10 чатов.) Каким будет лучший способ?

ответ

4

Означает ли это, что я могу иметь 10 текущих чатов одновременно?

У вас может быть гораздо больше. у вас будет 10, если человек может говорить ТОЛЬКО одному человеку, однако вы будете ограничены количеством сообщений в плане.

Как мне структурировать каналы? Должен ли быть один канал на чат?

Это зависит от того, насколько вы заботитесь о знании: кто в сети в любое время, и если вы хотите сократить количество сообщений о присутствии, потраченных Pusher, чтобы оптимизировать ваш план.

Вариант 1:

Каждый пользователь подписывается на канал, носящего его и прислушивается к его событиям.

user1 подпишется наличие-user1 канала и привязку к * message_received * событие на этом канале:

var channel = pusher.subscribe('user1'); 

channel.bind('message_received', function(message){ 
    console.log('Message received : '); 
    console.log(message); 
}); 

Когда user1 хочет связаться user2 они просто нужно вызвать a * 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 будет привязываться к user1: message_received на канале presence_all. Проблема с этим подходом - накладные расходы, однако, если вы не ожидаете интенсивного трафика, вы можете использовать этот, поскольку он намного более прямолинейен для кода.

Или создайте гибридный подход между ними как для присутствия, так и для обмена сообщениями. Вы должны проверить [https://pusher.tenderapp.com/kb/accountsbillingplanspricing/how-is-my-message-count-calculated][this]. Pusher подробно объяснить, как они оценивают обмен сообщениями.

Надеюсь, это поможет!

1

Означает ли это, что я могу иметь 10 текущих чатов одновременно?

Да, согласно их сообщению на форуме поддержки, "How are connections counted?".

Как мне структурировать каналы? Должен ли быть один канал на чат?

В самой базовой установке есть один канал для каждого чата. Но в большинстве случаев существуют дополнительные каналы, используемые для связи с присутствием других пользователей и другими функциями. Хорошим местом для начала является их Tutorial for a Realtime Chat Widget.

Смежные вопросы