2012-12-20 85 views
0

我有一個修改過的jPlayer,它連接到shoutcast/icecast源。jPlayer中的隨機數據流鏈接

我想讓jPlayer在打開頁面時隨機連接2個或多個url。

例如,如果我有2個鏈接:

  1. www.example.com:8000/live
  2. www.example.com:8000/live2

然後我需要jPlayer到在打開頁面時隨機選擇其中一個。 目的是爲了防止在一臺服務器上過載。

我該如何去jQuery代碼中去呢?

的jQuery:

$("#jquery_jplayer_1").jPlayer({ 
     ready: function(event) { 
      $(this).jPlayer("setMedia", { 
       mp3: "http://www.example.com:8000/live" 
      }).jPlayer("play"); 
     }, 
     swfPath: "js/", 
     wmode: "window", 
     solution: "flash,html", 
     supplied: "mp3", 
     preload: "none", 
     volume:0.75, 
     cssSelectorAncestor: "", 
     cssSelector: { 
       play: "#play", 
       pause: "#pause" 
     } 
    }); 

    $("#jquery_jplayer_1").bind($.jPlayer.event.pause, function(event) { 
     $(this).jPlayer("clearMedia"); 
     $(this).jPlayer("setMedia", { 
       mp3: "http://www.example.com:8000/live" 
     }); 
    }); 
+0

爲什麼不讓服務器決定呢?一個使用基本負載平衡邏輯重定向的url。 – MikeM

回答

2

回答你的問題,你可以做到以下幾點。

var servers = ["www.example.com:8000/live", "www.example.com:8000/live2"]; 
var server = servers[Math.floor(Math.random() * servers.length)]; 

$(this).jPlayer("setMedia", { 
    mp3: server 
}); 

儘管這不是解決你的實際問題的最佳途徑:

的目的是爲了防止過載一臺服務器上。

您應該考慮使用load balancing

+0

我得到意外的標識符,並沒有看到問題.. var servers = [「http://**.**.**:443 /; stream/1」,「http://**.**.* * **:8000 /直播「]; \t var server = servers [Math.floor(Math.random()* servers.length)]; \t \t準備:函數(事件){ \t \t \t $(本).jPlayer( 「setMedia」,{ \t \t \t \t MP3:服務器 \t \t \t})。jPlayer( 「播放」); – TonalDev

+1

@TonalDev,該代碼**不能**去那裏。例如,將它放在代碼的開頭 – Alexander

+0

Yup剛注意到我把它放在函數之外..如果我把它放在裏面,它會隨機化..謝謝! – TonalDev

1

你可以在任何服務器端語言或JavaScript中X隨機網址之一。然後簡單的隨機值傳遞給mp3:

var randomUrl = getRandomUrl(); 
$("#jquery_jplayer_1").bind(...) { 
     mp3: randomUrl; 
}