我正在构建一个基于多人游戏的游戏,客户端和服务器之间的通信是使用Pusher建立的。我可以使用游戏渠道向所有客户发送活动。问题是如何将事件发送到单个客户端? Pusher没有它的文档,只有看似解决方案是使用authenticated channels。为每个客户端向单个客户端发送事件验证专用通道是否可行,还是有更好的解决方案?
答案 0 :(得分:0)
您在答案中提到了最佳解决方案。您应该能够非常轻松地以编程方式为每个用户设置频道,然后通过这些频道向他们广播消息。
e.g。 (这是一个Ruby示例,但应该清楚发生了什么)
user = SOME_USER_OBJECT
Pusher.trigger("card-data-#{user.id}", 'card-update', {data: {card_id: 1, status: 'used'})
或类似的东西。显然,您需要确保在客户端用户订阅了正确的频道。
显然,如果您需要通道是安全的,那么,正如您所说,您可以使用经过身份验证的频道 - 在您的情况下,可能使用私有频道是有意义的。
如果您还有其他问题,可以再次在此处回复,我会看一下,或者您可以通过support@pusher.com向我们发送电子邮件。
答案 1 :(得分:0)
您可以为每个客户订阅单独的活动,而不是创建单独的频道。
答案 2 :(得分:0)
如果您使用的是PubNub,您可以为每个用户创建一个唯一的频道,只需将正确的消息发布到每个频道,或者您可以为所有用户创建一个公共频道,并使用流过滤器功能,以便每个客户端只在该频道上获取他们想要的消息。此过滤在服务器端执行,因此最终用户不会收到必须忽略的不需要的消息。
这是使用流过滤器的简单高级步骤
meta
参数meta
参数中,该参数将用于过滤PubNub网络上的消息,然后再将其发送给订阅者(基于每个订阅者的过滤器)。对于每个SDK的完整流过滤器文档(您通过标记提到):
您还可以使用PubNub BLOCKS 路由将每条消息发送到相应的用户频道(或者将频道映射到最终用户)on before publish
事件处理程序。我不会详细介绍这一点,因为它涉及的内容稍微多一点,但可以根据需要随意提出更多见解。要开始使用,您可以查看完整的BLOCKS docs。