2012-12-20 52 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; 
}