>  기사  >  웹 프론트엔드  >  Node.js는 공용 네트워크 서버 인스턴스에 액세스합니다.

Node.js는 공용 네트워크 서버 인스턴스에 액세스합니다.

PHP中文网
PHP中文网원래의
2017-06-19 17:39:03996검색

WiFi 인증 개발 프로세스에 사용된 소스 코드는 다음과 같습니다.

참고: AC가 성공적으로 해제되었는지, 공용 네트워크 Alibaba Cloud 서버에 액세스할 수 있는지 확인하세요.

기능 호출:

checkNet().then(function(res) {
    if(res) {
        //连网成功        
    }
    } else {
        //连网失败                
    }
})

기능 코드:

(function() {
    //检测入口
    checkNet = function() {
        var def = $.Deferred();
        xiuNet(null).then(function(res) {
            netWork(null).then(function(res) {
                if(res) {
                    def.resolve(true);
                } else {
                    def.resolve(false);
                }
            })
        })
        return def.promise();
    }
    
    //嗅探网络,解决ios弹框接入网络问题
    var checkTime = 2; //嗅探次数
    xiuNet = function(def) {
        if(def == null) {def = $.Deferred();}
        var iframe = document.createElement("iframe");
        iframe.style.cssText = "display:none;width:0px;height:0px;";
        document.body.appendChild(iframe);
        var ua = navigator.userAgent;
        if(ua.indexOf("iPhone") != -1 || ua.indexOf("iPod") != -1 ||ua.indexOf("iPad") != -1) {
            iframe.src = "http://www.baidu.com" + "?timestap=" + new Date().getTime();
            console.info("嗅探网络----");
            if(checkTime > 1) {
                checkTime--;
                setTimeout(function() {
                    xiuNet(def)
                }, 1000);
            } else {
                def.resolve(true);
            }
        } else {
            def.resolve(false);
        }
        return def.promise();
    }

    //检测网络,是否可以连接公网
    var cnetTime = 3; //检测网络次数
    netWork = function(def) {
        if(def == null) {def = $.Deferred();}
        $.ajax({
            type: "get",
            timeout: 2000,
            dataType: "jsonp",
            jsonp: "callback",
            url: 'https://jktv.tv/shphone/ver.txt',
            success: function(data) {},
            error: function(xhr) {
                $("#ddd").html("status:"+xhr.status)
                if(xhr.readyState == 4 && xhr.status == 200) {
                    def.resolve(true);
                } else {
                    if(cnetTime > 1) {
                        cnetTime--;
                        setTimeout(function() {
                            netWork(def)
                        }, 200);
                    } else {
                        def.resolve(false);
                    }
                }
            }
        });
        return def.promise();
    }
})();

위 내용은 Node.js는 공용 네트워크 서버 인스턴스에 액세스합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.