获取订阅推送器频道的用户数

Get the number of users subscribed to a pusher channel

我正在使用 vue.js 和 Pusher(用于实时多用户通信)实现一个应用程序。该应用程序提供每个用户对自己进行身份验证(访问主页),并且在开始之前,他在主页中设置一些设置(关于他在应用程序中的角色)。访问主页组件时会订阅推送器共享频道。我需要每个用户无法 select 主页中的任何内容,直到所有其他用户订阅该频道(访问主页),即主页中的设置部分必须为所有启用仅当每个人都订阅了该频道时才显示用户。我是 Pusher 的初学者,在 Pusher 文档中我发现有一种方法可以使用 属性 "subscription_count" 在推送器仪表板的 "App settings" 部分启用此可能性后。 特别是这是我发现的:https://pusher.com/docs/channels/library_auth_reference/rest-api(在 "GET channel (fetch info for one channel)" 段落中)。但是,我不知道是否可以使用以下语法直接通过频道实例获取订阅属性:pusher.info.subscription_count,其中 "pusher" 是:

 const pusher = new Pusher('********', {
    cluster: 'eu',
    encrypted: true,
    authEndpoint: 'https://*****/pusher/auth'
  })

或者如果我必须使用另一种语法。 此外,我想知道这个 属性 是否动态更新以便仅在计数等于特定值时启用设置部分(例如使用基于订阅数的 v-if 条件)。我希望你能帮助我。

如果您已经在对用户进行身份验证,我建议您使用 presence channels

您通过订阅带有 presence- 前缀的频道在客户端上订阅了一个状态频道。

存在渠道的一些功能应该有助于满足您的要求:

1) 当客户订阅在线状态频道时,他们将在 authentication response 中分配一个用户 ID(因此您可以准确跟踪 "who" 已订阅)。与订阅计数不同,来自同一用户的多个订阅不会被计数两次

2) 当客户端订阅存在频道时,随着订阅成功事件,他们将得到一个返回的 members 对象,其中包含频道中已经存在的所有成员的列表。这意味着您可以从客户端准确获取现有用户数。

3) 可以绑定member_added和member_removed事件。这将在每次有人加入或离开频道时触发回调。每次将成员添加到频道时,您都可以更新计数,直到达到所需数量