Pusher App客户端事件

时间:2011-03-04 21:02:17

标签: events client websocket

我正在编写一个多人国际象棋游戏,并使用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 个答案:

答案 0 :(得分:8)

我在我的应用程序上遇到了这个问题。此时,Pusher不提供将事件发送给特定用户的方法。我认为你提到的方法适用于你的情况。对于我的应用程序,我让每个用户订阅一个频道,其用户ID为频道ID,然后我可以通过该频道向单个用户发送消息。

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

我和推进团队讨论了这种方法,他们向我保证,拥有额外频道并没有真正的开销。 new Pusher()命令是创建新套接字连接的代码,因此您不必担心每个通道的额外套接字或类似的东西。希望这会有所帮助。

答案 1 :(得分:3)

我来自Pusher。正如Braden所说,您可以轻松地为每个用户创建一个频道。这比在事件名称中包含用户ID更有效,这意味着您使用无用的消息向每个人发送垃圾邮件。

这是我们希望进一步改进的领域,所以感谢您的反馈。

答案 2 :(得分:1)

如果您能够考虑其他服务,Beaconpush可以向特定用户发送消息。

从他们的网站:

  

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

相关问题