終止輪詢

 

	
	    /**
	     * 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);
	    }
相關文章
相關標籤/搜索