【问题标题】:Pusher App Client EventsPusher 应用程序客户端事件
【发布时间】:2011-03-04 21:02:16
【问题描述】:

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

但是我看不到这样的东西。有任何想法吗?谢谢。

【问题讨论】:

    标签: events client websocket


    【解决方案1】:

    我在我的应用程序中遇到了这个问题。目前 Pusher 不提供向特定用户发送事件的方法。我认为您提到的方法适用于您的情况。对于我的应用程序,我让每个用户订阅一个频道,他们的用户 ID 作为频道 ID,然后我可以通过该频道向单个用户发送消息。

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 每个用户的不同频道似乎相当不错。你怎么能改进呢?
      【解决方案3】:

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

      来自他们的网站:

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

      【讨论】:

        猜你喜欢
        • 2017-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-24
        • 1970-01-01
        • 2017-06-08
        相关资源
        最近更新 更多