let domains = [
{uri:'192.168.31.215:9523', speed:0},
{uri:'api.ceshi.org', speed:0},
]
export const protocol = {
api: 'http://',
h5Url: 'https://www.',
downAPPUrl: 'https://download.'
}
export async function getDomain(){
const result = new Promise((resolve, reject)=>{
testSpeed().then(res=>{
resolve(res)
}).catch(()=>{
resolve(domains[0].uri)
})
})
return result
}
function testSpeed(){
return new Promise((resolve, reject)=>{
let array = []
domains.forEach((item, index) => {
array.push(getSpeedWithAjax(`${protocol.api}${item.uri}/images/speedTest.jpg`))
})
Promise.all(array).then(res=>{
console.log(res);
domains.forEach((e,i)=>{
e.speed = res[i]
})
let arr = sort_uris(domains)
resolve(arr[0].uri)
}).catch((err)=>{
console.log(err);
reject()
})
})
}
function sort_uris(array) {
let compare = function(obj1, obj2) {
var val1 = obj1.speed;
var val2 = obj2.speed;
if (val1 < val2) {
return -1;
} else if (val1 > val2) {
return 1;
} else {
return 0;
}
}
return array.filter((num) => {
return num.speed > 0;
}).sort(compare)
}
function getSpeedWithAjax(url){
return new Promise((resolve, reject) => {
let start = null;
let end = null;
start = new Date().getTime();
const xhr = uni.request({
url,
timeout:2000,
success: () => {
end = new Date().getTime();
resolve(end - start)
},
fail: () => {
resolve(0)
}
});
})
}
import { getDomain, protocol } from '@/utils/common.js'
getDomain().then(domain=>{
console.log(domain);
let h5Url = `${protocol.h5Url}${domain}`
let downAPPUrl = `${protocol.downAPPUrl}${domain}`
let baseUrl = `${protocol.api}${domain}`
uni.$emit('urlChange',{
baseUrl
})
Object.assign(Vue.prototype, {
'$downAPPUrl':downAPPUrl,
'$h5Url':h5Url,
'$imgUrl':baseUrl,
})
const app = new Vue({
...App,
i18n
})
app.$mount()
})
let baseURL;
uni.$on('urlChange',data=>{
baseURL = data.baseUrl
})
console.log(baseURL)