macOS Mojave 10.14.1
VisualStudioCode 1.29.1
Chrome 72.0.3626.121
AgoraVideoSDK for Web 2.8.0
PHP 5.5.26
MySQL 5.5.42
・ライブ作成
・ライブ配信(Web SDK)
・ライブ視聴(Web SDK)
・チャット(Signaling SDK)
・ハート送信(Signaling SDK)
・延べ視聴人数/ハート数のリアルタイム表示
・同時視聴数の記録(RESTFull API)
実装の手法は様々です。要件に合わせて異なってきます。
今回は、Channelに接続している人=視聴しているとしてagora.ioが提供しているRESTFull APIを利用しています。
https://docs.agora.io/en/Agora%20Platform/dashboard_restful_communication?platform=All%20Platforms
$channelName = BASE_CHANNEL_NAME . $_GET['live_id'];
$url = sprintf("%s/%s/%s/%s/%s",REST_API_URL,"channel","user",APP_ID,$channelName);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, REST_API_USER . ":" . REST_API_PASS);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$json = curl_exec($ch);
curl_close($ch);
$data = json_decode($json, true);
$count = 0;
if($data['success'] && isset($data['data']['audience_total'])){
$count = $data['data']['audience_total'];
}
$sql = sprintf("insert into session (live_id,count,created_at) value(%s,%s,now())",$pdo->quote($_GET['live_id']),$pdo->quote($count));
$pdo->query($sql);