События клиента приложения Pusher - PullRequest
4 голосов
/ 05 марта 2011

Я пишу многопользовательскую шахматную игру и использую Pusher для серверной части websocket.

В любом случае, если у меня есть список пользователей, и я выбираю любого из них и вызываю его, как я могу отправить запрос только этому одному пользователю? Я знаю, что использовал бы клиентское событие как:

channel.trigger("client-challenge_member1", {some : "data"});

Но это событие, должно быть, уже было создано, я думаю. Итак, я создаю это событие динамически после подписки каждого участника? как возможно в:

channel.bind("pusher:subscribed_completed", function(member) // not sure of correct syntax but...
{
   channel.bind("client-challenge_" + member.memberID, function(data)
   {
      alert(data.Name + " is challenging you.");
   });
});

Я бы подумал, что для trigger будет перегружен метод, например:

channel.trigger(eventName, data, memberID)

Но я не вижу ничего подобного. Есть идеи? Спасибо.

Ответы [ 3 ]

8 голосов
/ 26 марта 2011

Я столкнулся с этой проблемой в моем приложении.В настоящее время Pusher не предоставляет методы для отправки событий конкретному пользователю.Я думаю, что подход, который вы упомянули, будет работать для вашей ситуации.Для моего приложения каждый пользователь подписывался на канал с идентификатором пользователя в качестве идентификатора канала, затем я мог отправлять сообщения одному пользователю через этот канал.

client = new Pusher(PUSHER_API_KEY);
channel = client.subscribe(user_id);
channel.bind('my_event',function(data){ 
  //Do stuff
}); 

Я обсудил этот подход с толкателемкоманда, и они заверили меня, что не было никаких дополнительных затрат на наличие дополнительных каналов.Команда new Pusher() - это код, который создает новое сокетное соединение, поэтому вам не нужно беспокоиться о дополнительных сокетах на канал или чем-то подобном.Надеюсь, это поможет.

3 голосов
/ 30 мая 2011

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

Это область, которую мы хотим улучшить в дальнейшем, поэтому спасибо за отзыв.

1 голос
/ 12 апреля 2011

Если вы можете рассмотреть другую услугу, Beaconpush имеет возможность отправлять сообщения определенному пользователю.

С их сайта:

POST /1.0.0/[API key]/users/[user]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...