已解决
uniapp:配置动态接口域名,根据图片访问速度,选择最快的接口
来自网友在路上 164864提问 提问时间:2023-09-23 02:52:38阅读次数: 64
最佳答案 问答题库648位专家为你答疑解惑
common.js
// 动态测速选择的域名
// h5直接返回默认第一个域名
// vue文件用到域名的话用this.$baseURL
let domains = [{uri:'192.168.31.215:9523', speed:0},{uri:'api.ceshi.org', speed:0},
]export const protocol = {api: 'http://',//本地// api: 'https://api.',//正式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
}// 得出最快的域名
// speedTest.jpg 需要提前放到服务器上,根据图片的访问速度来选择请求的接口
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)}});})
}
main.js
import { getDomain, protocol } from '@/utils/common.js' //公共方法
getDomain().then(domain=>{console.log(domain);// H5地址let h5Url = `${protocol.h5Url}${domain}`// APP下载地址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()
})
request.js
let baseURL;
uni.$on('urlChange',data=>{baseURL = data.baseUrl
})
// 这个baseURL 就是根据图片访问速度 动态获取到的接口url
console.log(baseURL)
查看全文
99%的人还看了
相似问题
- Ubuntu中apt-get update显示域名解析失败
- 轻松搭建短域名短链接服务系统,可选权限认证,并自动生成证书认证把nginx的http访问转换为https加密访问,完整步骤和代码
- 域名的理解
- Nginx快速入门教程,域名转发、负载均衡
- Nginx:不同域名访问同一台机器的不同项目
- Ubuntu下启动Apache对.htaccess 的支持步骤, 利用.htaccess绑定域名到子目录
- 快速实现一个企业级域名 SSL 证书有效期监控巡检系统
- 企业泛域名SSL证书续费
- python脚本监听域名证书过期时间,并将通知消息到钉钉
- golang 发起 http 请求,获取访问域名的 ip 地址(net, httptrace)
猜你感兴趣
版权申明
本文"uniapp:配置动态接口域名,根据图片访问速度,选择最快的接口":http://eshow365.cn/6-11825-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 第一百五十一回 自定义组件综合实例:游戏摇杆二
- 下一篇: 算法通关村 | 透彻理解动态规划