前端檢測是否可ping通ip地址(PC端)
// 前端檢測是否可ping通ip地址
pingFn(ips) {
let promiseArr = [];
ips.forEach(ip=>{
// debugger
let pro = new Promise((res, rej)=>{
let img = new Image();
let start = new Date().getTime();
img.src = 'https://' + ip + '?t=' + start;
img.onload = function() {
res({code:200,status: true,ip});
};
img.onerror = function() {
res({code:200,status: true,ip});
};
let timer = setTimeout(()=>{
clearTimeout(timer);
rej();
}, 1500);
}).catch((e) => {});
promiseArr.push(pro);
});
return Promise.any(promiseArr);
},
前端檢測是否可ping通ip地址(uniapp小程序端)
// 前端檢測是否可ping通ip地址
pingFn(ips) {
let promiseArr = [];
ips.forEach(ip=>{
let pro = new Promise((res, rej)=>{
let start = new Date().getTime();
let url = 'https://' + ip + '?t=' + start;
uni.getImageInfo({
src: url,
success: function (image) {
res({code:200,status: true,ip});
},
fail:function(err){
res({code:200,status: true,ip});
}
});
let timer = setTimeout(()=>{
clearTimeout(timer);
rej();
}, 1500);
}).catch((e) => {});
promiseArr.push(pro);
});
return Promise.any(promiseArr);
},
async getData() {
let a = await this.pingFn(['192.168.0.12','192.168.0.13']);
// console.log('檢測是否能ping通內(nèi)網(wǎng)地址====',a)
if(a){
// 如果有返回值,則可以ping通
}else{
// 無返回值會返回undefined
}
// 根據(jù)返回值執(zhí)行自己的后續(xù)操作
}
首先實(shí)現(xiàn)的是PC端功能,后粘貼到小程序里,發(fā)現(xiàn)實(shí)現(xiàn)不了,代碼一行行定位后發(fā)現(xiàn)在new Image()那一步就已經(jīng)走不下去了,后百度發(fā)現(xiàn)腳本不支持Image對象,將寫法改一下即可。
參考文檔:
1、vue2實(shí)現(xiàn)前端ping 后端給的ip地址是否可以ping通【https://blog.csdn.net/weixin_43845137/article/details/130371232】
2、uni-app在腳本中不支持Image對象?【https://ask.dcloud.net.cn/question/76390】文章來源地址http://www.zghlxwxcb.cn/news/detail-643762.html
文章來源:http://www.zghlxwxcb.cn/news/detail-643762.html
到了這里,關(guān)于檢測前端是否可以ping通后端返回的ip地址的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!