问题描述:
后端提供的hls直播流不靠谱,经常报一些跨域、404等错误,需要多尝试检查几次再给播放器播放
解决方案:
//检查跨域404等错误
isRunUrl(src,callback,count) {
var c=count||0
var check=function(url){
return new Promise(function (resolve,reject) {
var dom=document.createElement('link')
dom.href=url;
dom.rel='stylesheet'
document.head.appendChild(dom);
dom.onload = function(){
document.head.removeChild(dom)
resolve()
}
dom.onerror=reject
})
}
check(src).then(e=>{
callback('success')
},e=>{
c++
//限制尝试10s
if(c<=10){
setTimeout(e=>{
this.isRunUrl(src,callback,c)
},1000)
}else{
callback('fail')
}
})
},
this.$axios.post('/getHls',{
...
}).then(res=>{
this.isRunUrl(res.url,(status)=>{
this.loading=false
if(status=='success'){
this.src=res.url
}else{
this.showTip=true
}
})
})