Означает ли это, что я могу иметь 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 подробно объяснить, как они оценивают обмен сообщениями.
Надеюсь, это поможет!