检测前端是否可以ping通后端返回的ip地址

检测前端是否可以ping通后端返回的ip地址

前端检测是否可ping通ip地址(PC端)

javascript 复制代码
// 前端检测是否可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小程序端)

javascript 复制代码
// 前端检测是否可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);
},
javascript 复制代码
async getData() {
	let a = await this.pingFn(['192.168.0.12','192.168.0.13']);
	// console.log('检测是否能ping通内网地址====',a)
	if(a){
		// 如果有返回值,则可以ping通
	}else{
		// 无返回值会返回undefined
	}
	// 根据返回值执行自己的后续操作
}

首先实现的是PC端功能,后粘贴到小程序里,发现实现不了,代码一行行定位后发现在new Image()那一步就已经走不下去了,后百度发现脚本不支持Image对象,将写法改一下即可。

参考文档:

1、vue2实现前端ping 后端给的ip地址是否可以ping通【https://blog.csdn.net/weixin_43845137/article/details/130371232】

2、uni-app在脚本中不支持Image对象?【https://ask.dcloud.net.cn/question/76390】

相关推荐
AI视觉网奇1 分钟前
three-bvh-csg glb分割
开发语言·前端·javascript
很楠爱上4 分钟前
TypeScript 核心知识精要
javascript·ubuntu·typescript
zhangfeng11337 分钟前
workbuddy ,node.js 每次会在 项目目录上安装 node_modules,能不能一次安装多次使用,为什么 npm 不把包装在全局
前端·npm·node.js
一次旅行8 分钟前
CopilotKit实战:用生成式UI打造智能Agent前端
前端·人工智能·ui
禅思院26 分钟前
大列表性能优化 · 工程实战·四
开发语言·前端·性能优化·前端框架·php·异步加载
rising start26 分钟前
五、Vue3 ref 用法 + Props 完整指南
前端·javascript·vue.js
web打印社区27 分钟前
前端html转换pdf并静默打印pdf最佳实现路径
前端·javascript·vue.js·electron·html
Curvatureflight37 分钟前
浏览器音频采集实践:麦克风权限、降噪、回声消除与 PCM 转换
前端·javascript·音视频·信息与通信·web·pcm
Dontla39 分钟前
HTML实体转义(HTML Entity Escaping)介绍
前端·html
咸鱼翻身小阿橙40 分钟前
高斯模糊降噪/磨皮算法降噪图像
前端·opencv·算法·webpack·c#