zoukankan      html  css  js  c++  java
  • 终止轮询

    	
    	    /**
    	     * polling
    	     * @param data
    	     */
    	    function checkLoginHandler (data) {
    	        /**
    	         * code:
    	         *      200: 成功
    	         *      201:扫描成功,但未点确认
    	         *      408:未扫描
    	         *      400:未知
    	         *      500: login poll srv exception
    	         *
    	         */
    	        switch(data.code){
    	            case 200:
    	                loginFactory.newLoginPage(data.redirect_uri).then(function (msg) {
    	                    var ret = msg.match(/<ret>(.*)</ret>/),
    	                        code = msg.match(/<script>(.*)</script>/),
    	                        skey=msg.match(/<skey>(.*)</skey>/),
    	                        wxsid=msg.match(/<wxsid>(.*)</wxsid>/),
    	                        wxuin=msg.match(/<wxuin>(.*)</wxuin>/),
    	                        passticket=msg.match(/<pass_ticket>(.*)</pass_ticket>/),
    	                        message=msg.match(/<message>(.*)</message>/),
    	                        redirecturl=msg.match(/<redirecturl>(.*)</redirecturl>/);
    	
    	
    	
    	
    	                    if(redirecturl){
    	                        window.location.href = redirecturl[1];
    	                        return;
    	                    }
    	
    	                    if(ret && (ret[1] != '0')){
    	                        alert((message && message[1])|| '登陆失败');
    	                        monitorService.report(monitorService.AUTH_FAIL_COUNT, 1);
    	                        location.reload();
    	                        return;
    	                    }
    	
    	
    	                    $scope.$emit('newLoginPage',{
    	                        Ret:ret && ret[1],
    	                        SKey:skey && skey[1],
    	                        Sid:wxsid && wxsid[1],
    	                        Uin:wxuin && wxuin[1],
    	                        Passticket:passticket && passticket[1],
    	                        Code:code
    	                    });
    	                    if(!utilFactory.getCookie('webwx_data_ticket')){
    	                        reportService.report(reportService.ReportType.cookieError,{
    	                            text:'webwx_data_ticket 票据丢失',
    	                            cookie:document.cookie
    	                        });
    	                    }
    	
    	
    	                });
    	                break;
    	            case 201:
    	                $scope.isScan = true;
    	                reportService.report(reportService.ReportType.timing,{
    	                    timing:{
    	                        scan:Date.now()
    	                    }
    	                });
    	                loginFactory.checkLogin($scope.uuid).then(checkLoginHandler, function (data){
    	                    if(!data && window.checkLoginPromise){
    	                        $scope.isBrokenNetwork = true;
    	                    }
    	                });
    	                break;
    	            case 408:
    	                loginFactory.checkLogin($scope.uuid).then(checkLoginHandler, function (data){
    	                    if(!data && window.checkLoginPromise){
    	                        $scope.isBrokenNetwork = true;
    	                    }
    	                });
    	                break;
    	            case 400:
    	            case 500:
    	            case 0:
    	                // 这里要累计次数
    	                var refreshTimes = utilFactory.getCookie('refreshTimes') || 0;
    	                if(refreshTimes < 5){
    	                    refreshTimes++;
    	                    utilFactory.setCookie('refreshTimes', refreshTimes, 0.5);
    	                    document.location.reload();
    	                }
    	                else{
    	                    $scope.isNeedRefresh = true;
    	                }
    	                break;
    	            case 202: // 点击取消
    	                // 1. 关联登录,等待确认,取消
    	                // 2. 扫码之后,等待确认,取消
    	                $scope.isScan = false;
    	                $scope.isAssociationLogin = false;
    	                utilFactory.setCookie('login_frequency', 0, 2);
    	
    	                // 终止轮询
    	                if(window.checkLoginPromise){
    	                    window.checkLoginPromise.abort();
    	                    window.checkLoginPromise = null;
    	                }
    	
    	                doQrcodeLogin();
    	                break;
    	            default:
    	            //todo
    	        }
    	        $scope.code = data.code;
    	        $scope.userAvatar = data.userAvatar;
    	        utilFactory.log('get code',data.code);
    	    }
  • 相关阅读:
    微信开发笔记:修改公众号自定义菜单
    微信开发笔记:公众号获取access_token
    微信开发笔记:微信浏览器分享设置以及回调
    HTML5开发笔记:初窥CANVAS,上传canvas图片到服务器
    求解分组问题(百度面试题)
    Python求解啤酒问题(携程2016笔试题)
    Fiddler教程【转】
    求解朋友关系中的朋友圈数量
    HTTP协议详解【转】
    求解暗黑字符串(网易2017秋招)
  • 原文地址:https://www.cnblogs.com/rsapaper/p/12981227.html
Copyright © 2011-2022 走看看