js实现 ping 函数来检测是否能访问内网环境

实际使用在了cn.costream.site中,项目中的这篇 Issue 是我记录的.

//ping 函数, 检测与内网连接是否能在100ms 内响应. 实测实验室电脑连接内网 ping 为 9-11ms 左右
function ping(ip,timeout,success,callback) {
    var img = new Image()
    var start = new Date().getTime()
    img.src = /^(http)/.test(ip) ? ip + "?t=" + start : "http://" + ip + "?t=" + start
    console.log(img.src)
    var flag = false  //无法访问
    img.onload = function () {
        flag = true
        success()
        console.log('ping ok')
    }
    img.onerror = function () {
        flag = true
        success()
        console.log('ping error')
    }
    var timer = setTimeout(function () {
        if (!flag) {    //如果真的无法访问
            flag = false
            console.log('ping Timeout!')
            callback()
        }
    }, timeout)
}
ping('http://202.114.18.86/icons/powered_by_rh.png',100,success,check)

你可能感兴趣的:(js实现 ping 函数来检测是否能访问内网环境)