1

所以基本上我想做的是实时获取当前直播的流媒体的观众人数。我检查一下流是否是实时的。您如何不断地 ping API 以获取更新的值,以便我可以将更新的值发送到文档,在这种情况下,它最终会更新$viewers我设置的变量。如果它有所作为,我正在制作的应用程序正在使用CodeIgniter framework. 以下是我目前必须拨打电话的代码。现在我必须重新加载页面才能获得实际值,它使用 cURL 进行 API 调用。

class Streaming {   
    var $base_url = "https://api.twitch.tv/kraken/";
    var $client_id = 'client_id_here';
  public function load_stream_stats($channel) {
    $curl = curl_init();
    curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1,
                                    CURLOPT_URL => $this->base_url . 'streams/'. $channel .'?client_id=' . $this->client_id
                                  )
    );
    $result = curl_exec($curl);
    //makes sure that the cURL was excuted if not it generates the error stating that it didn't succeed.
    if(!curl_exec($curl)){
        die('Error: "' . curl_error($curl) . '" - Code: ' . curl_errno($curl));
    } else {
        //cURL Response worked
        if(!empty($channel)) {
            $return = json_decode($result);
            if($return->stream == null) {
                return;
                // stream is offline no need to do anything
            } else {
                $stream_details = array('viewers' => $return->stream->viewers);
                // $return->stream->viewers gives a number e.g. 1052
                return $stream_details;
            }
        } 
    }
    curl_close($curl);
  }
}

手头的问题是我如何 ping TwitchtV API 以从 REST API 获取更新的观众人数?

4

1 回答 1

1

工作 ajax 就在这里。在 site_url/auto_update/broadcast/username 中,我有一个 json 值,其中包含从 API 中提取的查看者计数,以便我可以自动更新它。因此,从 api 编码查看器计数并将其编码为 json,然后您可以提取所有值。

<script type="text/javascript">
    var viewers = <?= $viewers ?>;
    var username = "<?= $username ?>";
    var site_url = "<?= base_url() ?>";
    var poll_interval = 3000;
</script>
<script type="text/javascript">
$(document).ready(function() {
    $('#viewers').append(viewers);

    setInterval(function(){
        $.ajax({
            url: site_url + "auto_update/broadcast/" + username,
            type: "GET",
            dataType: "json",
            cache: false,
            success: function(data) {
              if (data == null) return;
              var update_viewers = data['viewers'];
              console.log(update_viewers);
              $('#viewers').html(update_viewers);
            }
          });
    }, poll_interval);
});
</script>

AJAX 调用包含新更新的查看者计数的函数,然后将其编码为 json。我每 3 秒调用一次这个函数。如果附加了客户端 ID,那么您不会受到速率限制。希望这可以帮助某人。

如果您有任何问题,请告诉我,我会尽力帮助您!

于 2013-04-18T19:47:25.527 回答