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中某个地方的后端代码中?
如果您使用的是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中。