Laravel广播频道-检查连接

Dre*_*rew 4 php broadcast laravel laravel-echo

我在文档中或通过搜索找不到此内容,也许有人提供了一些提示。我正在尝试检查后端的状态通道上有多少个连接。

我可以像这样用Echo在前端检查罚款:

Echo.join('chat')
    .here((users) => {
        // users.length is the proper count of connections
    })
Run Code Online (Sandbox Code Playgroud)

但是有什么办法可以让我获得相同数量的连接,但是在Laravel中某个地方的后端代码中?

Ale*_*ris 5

如果您使用的是Pusher,则后端只能执行以下操作:

$response = $pusher->get( '/channels/presence-channel-name/users' );
if( $response[ 'status'] == 200 ) {
  // convert to associative array for easier consumption
  $users = json_decode( $response[ 'body' ], true )[ 'users' ];
}

$userCount = count($users);
Run Code Online (Sandbox Code Playgroud)

您可以在pusher 文档中阅读有关它的更多信息。在推进-HTTP-PHP SDK也有一些这方面的资料。

可以通过查询将/channels/[channel_name]/users资源channel_name替换为有效的在线频道名称的资源 来检索在线频道上存在的用户列表。

明确地,这适用于在线渠道。

此外,您可以通过webhooks跟踪渠道中的用户。

每当用户订阅或取消在线状态频道时,通知您的应用程序。例如,这允许您同步服务器以及所有应用程序客户端上的通道存在状态。

Pusher将以以下形式向您的服务器发送信息:

{
  "name": "member_added", // or "member_removed"
  "channel": "presence-your_channel_name",
  "user_id": "a_user_id"
}
Run Code Online (Sandbox Code Playgroud)

此数据可能存储在数据库的表中,也可能存储在Redis中。