2013-03-06 68 views
1

所以基本上我想要做的是爲當前正在直播的流實時提供查看器計數。我有一個檢查,看看流是否是活的。你如何不斷地ping API以獲取更新的值,以便我可以將更新的值發送到文檔,在這種情況下,它最終將更新我設置的$viewers變量。如果它有所不同,我正在使用的應用程序是使用CodeIgniter framework。以下是我目前必須打電話的代碼。現在我必須重新加載頁面以獲取實際值,並使用cURL來調用API。不斷通過REST API檢查TwitchTV查看器計數

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獲取更新的查看器計數?

+0

您需要調用腳本來獲取具有ajax的查看器數量。這裏沒有「實時」這樣的東西。您只能在一段時間內進行輪詢。您可能會檢查網站是否每分鐘可以打多少次都有限制。 – mkaatman 2013-03-06 21:28:12

+0

我正在閱讀,如果你提供'client_id',那麼調用API沒有限制。如果我是通過AJAX來完成這項工作的,那麼我將如何編寫代碼來完成這個特定功能的AJAX請求。此功能是我需要檢查間隔的唯一功能。我試圖確保代碼儘可能乾淨,並且易於爲希望使用腳本的其他人實現。 – Elias 2013-03-06 21:33:15

+0

下面是一個示例:http://stackoverflow.com/questions/9436534/ajax-tutorial-for-post-and-get – mkaatman 2013-03-06 21:37:28

回答

1

工作阿賈克斯是在這裏。在site_url/auto_update/broadcast /用戶名中,我有一個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,則不會受到速率限制。希望這可以幫助別人。

如果您有任何問題,請告訴我,我會盡力幫助您盡我所能!