실시 간 개발 프레임 워 크 Meteor API 판독 시리즈 서버 연결

29623 단어
앞 에 쓰 면...
이 블 로 그 는 주로 서버 연결 을 말한다.
0.8.0 버 전 기반 이 블 로 그 는 ubuntu 시스템 에서 작 동 합 니 다.
블 로그 주소:http://blog.csdn.net/a6383277/article/details/23100421 전재 출처 밝 혀 주세요 가능 하 다 면 공식 문 서 를 읽 으 세 요.블 로그 에 잘못된 누락 이 있 으 니 양해 와 지적 을 바 랍 니 다.감사합니다.
Server connections
이곳 의 API 는 주로 서버 와 클 라 이언 트 간 의 통신 을 관리 합 니 다.
Meteor.status() Client
이 함 수 는 주로 현재 연결 상 태 를 가 져 옵 니 다.Client 에서 사용 합 니 다.그것 의 반환 결 과 는 Object 대상 이다.그것 은 활성 데이터 원본 이다.코드 먼저 보기:
meteor create API-004 #     cd API-004 mkdir client #      mv API-004.js client/ #     mv API-004.html client/ #     rm *.css #    

client/API-004.js:
 Template.hello.greeting = function () { return EJSON.stringify(Meteor.status()); };

client/API-004.html:
<head> <title>API-004</title> </head> <body> {{> hello}} </body> <template name="hello"> <h1>Hello World!</h1> {{greeting}} </template>

응용 프로그램 을 시작 하고 브 라 우 저 localhost: 3000 보기 결 과 를 엽 니 다.
{"status":"connected","connected":true,"retryCount":0}

이것 은 연결 상태의 대상 입 니 다. 현재 브 라 우 저가 열 려 있 는 상 태 를 유지 한 후 Ctrl + C 로 응용 프로그램 을 종료 합 니 다. 페이지 의 변 화 를 보고 있 습 니 다. 이와 같은 결과 (브 라 우 저가 계속 새로 고침 되 고 페이지 데이터 가 계속 바 뀌 는 것 을 볼 수 있 습 니 다):
{"status":"waiting","connected":false,"retryCount":2,"retryTime":1396850850849.2966}

애플 리 케 이 션 을 다시 시작 합 니 다. 잠시 후에 결 과 를 볼 수 있 습 니 다.(ps: 연결 이 끊 긴 후에 meter 는 고정된 주파수 로 백 엔 드 를 다시 시도 하 는 것 이 아니 라 점점 늘 어 나 는 시간 이기 때 문 입 니 다. 만약 에 첫 번 째 로 1 초 밖 에 안 될 수도 있 고 연결 이 없 으 면 3 초 를 기다 리 고 연결 을 시도 합 니 다. 연결 되 지 않 으 면 6 초 를 기다 리 고 뒤로 갈수 록 연결 을 시도 하 는 빈도 가 낮 습 니 다)
{"status":"connected","connected":true,"retryCount":0}

이 대상 의 주요 속성 은
연결 유형: Boolean
현재 서버 와 연결 되 어 있 는 경우 true 입 니 다. 그렇지 않 으 면 false 입 니 다. 링크 가 없 으 면 false 일 때 까지 이 방법 을 계속 호출 합 니 다.
status 형식 문자열
이 속성 은 현재 연결 상 태 를 설명 합 니 다. 가능 한 값 은 "connected" (연결 되 었 습 니 다), "connecting" (서버 에 연결 되 지 않 았 습 니 다. 새로운 연결 을 시도 하고 있 습 니 다), "failed" (연결 이 실 패 했 습 니 다. 예 를 들 어 클 라 이언 트 와 서버 의 DDP 버 전이 다 르 기 때문에 데 이 터 를 분석 할 수 없고 연결 이 실 패 했 습 니 다), "waiting"(연결 에 실 패 했 습 니 다. 링크 를 다시 시도 하 기 를 기다 리 고 있 습 니 다) "오프라인" (사용자 가 오프라인 상태 입 니 다)
retryCount 유형 번호
연결 을 잃 은 후 클 라 이언 트 가 연결 을 시도 한 횟수 입 니 다. 연결 되 었 을 때 이 값 은 0 입 니 다.
retry Time 형식 Number 또는 undefined
다음 이 야 말로 연결 시간 입 니 다. 단 위 는 밀리초 입 니 다. 이 속성 은 status 가 "waiting" 일 때 만 있 습 니 다. 이 를 통 해 다음 링크 를 시도 하 는 시간 이 얼마나 되 는 지 알 수 있 습 니 다.
new Date(retryTime)

혹은 몇 초 를 더 기 다 려 야 연결 할 수 있 습 니까?
(retryTime - (new Date()).getTime())/1000

코드 보기:  client / API - 004. js 수정:
 Template.hello.greeting = function () { return EJSON.stringify(Meteor.status()); }; Template.hello.time = function () { var status = Meteor.status(); var retryTime = status.retryTime; if(!retryTime){ return {} } var date = (new Date(retryTime)).toString(); var second = Math.floor(retryTime - (new Date()).getTime()) / 1000; return { date:date, second:second } };

클 라 이언 트 / API - 004. html 수정
<head> <title>API-004</title> </head> <body> {{> hello}} </body> <template name="hello"> <h1>Hello World!</h1> {{greeting}} <br> <br> <br> {{#with time}}           :{{date}}<br>             :{{second}} {{/with}} </template>

서버 를 끊 고 재 접속 효 과 를 시도 합 니 다.
reason 타 입 String 혹은 undefined
status 의 값 이 "failed" 일 때 연결 이 실패 한 이 유 를 알려 줍 니 다. 지금 은 이 필드 를 잠시 나 올 수 없습니다. 처리 방법 이 있 으 면 블 로그 에 메 시 지 를 남 겨 주세요.
Meteor. status () 는 활성 데이터 원본 이기 때문에 데 이 터 를 Template 에 연결 할 수 있 습 니 다. 값 이 바 뀌 면 바로 인터페이스 에 반응 할 수 있 습 니 다. 클 라 이언 트 와 서버 가 끊 어 질 때 이 함 수 를 이용 하여 사용자 에 게 알려 줄 수 있 습 니 다.
Meteor. reconnect () 클 라 이언 트 호출
위 에서 말 했 듯 이 연결 되 지 않 았 을 때 클 라 이언 트 는 일정 시간 마다 서버 에 자동 으로 연결 합 니 다. 연결 을 강제로 시도 하려 면 이 방법 을 사용 할 수 있 습 니 다. 링크 상태 에 있 을 때 이 방법 은 아무것도 하지 않 습 니 다.  이 방법 을 테스트 할 수 있 습 니 다. 서버 를 닫 고 브 라 우 저 콘 솔 에 Meteor. reconnect () 를 입력 하면 인터페이스 에 있 는 retry Time 등 속성 값 이 곧 변 합 니 다. 이것 이 서버 와 의 연결 을 강제로 새로 고침 하 는 것 입 니 다.
Meteor. disconnect () 클 라 이언 트 호출
자동 으로 연결 을 시도 하 라 는 것 이 아니 라 서버 와 의 연결 을 강제로 끊 는 것 도 자 연 스 럽 습 니 다. 이 함 수 는 서버 와 의 연결 을 강제로 끊 는 것 입 니 다. 이 방법 을 사용 하면 활성 데이터 의 업 데 이 트 를 중단 합 니 다. 클 라 이언 트 도 업데이트 데 이 터 를 받 지 않 습 니 다. 배경 코드 가 바 뀌 어도 페이지 는 변 하지 않 습 니 다.코드 열 배치 의 영향 도 금 지 됩 니 다. 현재 일정 시간 마다 자동 으로 서버 연결 을 시도 하 는 기능 도 금 지 됩 니 다. status 상태 offline 입 니 다. Meteor.reconnect 를 통과 할 수 있 습 니 다.연결 상 태 를 회복 합 니 다. 실시 간 데이터 변화 가 꼭 필요 한 것 은 아 닐 때 모 바 일 기기 에 전 기 를 유지 할 수 있 습 니 다. 데 이 터 를 장기간 업데이트 하면 전력 소 모 를 가 져 올 수 있 습 니 다. 콘 솔 에서 직접 시도 해 보 세 요. 실제 효과 가 어떤 지 보 세 요.
Meteor. onConnection (callback) 서버 단 호출
새로운 클 라 이언 트 가 서버 에 연결 되 었 을 때 이 함수 에 등 록 된 리 셋 함수 (연결 모니터 와 유사) 를 호출 합 니 다.
이 함 수 는 반환 값 이 있 습 니 다. stop 함수 가 있 는 대상 입 니 다. stop 함 수 를 호출 하면 안의 반전 함수 가 멈 추고 새로운 연결 이 올 때 실행 되 지 않 습 니 다.  리 턴 함수 가 대상 인 자 를 받 습 니 다. 우 리 는 코드 를 통 해 실제 효 과 를 봅 니 다.  응용 루트 디 렉 터 리 아래 server 폴 더 를 만 들 고 js 파일 server. js 를 새로 만 듭 니 다.  코드 는 다음 과 같 습 니 다:  server.js:
var conn = Meteor.onConnection(function(connection){ /* lbacks will be called again, and the new connection will have a new connection id.        。               ,        uuid.         ,     。               ,              id     。              。            ,     。 */ var uuid = connection.id; //   uuid            uuid   java   sid. console.log("       uuid  :" +uuid); //connection.close() //                     //                 。 :ip      。                 。 //    10  ,       var closeTest = function(){ connection.close(); } //  Meteor.setTimeout      js setTimeout,     setTimeout            ,    Meteor    。 Meteor.setTimeout(closeTest,10000); //                ,            ,             。 //        ,           Meteor.disconnect()               。 connection.onClose(function(){ console.log("     ") }); //   ip  ,                 。           。 /**   :          。        。       。          ,          ,    。     meteor          (     nginx  ),            ip            HTTP_FORWARDED_COUNT    HTTP_FORWARDED_COUNT                  .         ,         1. */ var clientAddress = connection.clientAddress; console.log("   ip :"+clientAddress); //   http   ,   Cookie var httpHeaders = connection.httpHeaders; console.log("http  :"+EJSON.stringify(httpHeaders)); }); //   conn.stop() ,   onConnection             。 //                      function abc(){ conn.stop(); } //10      。                 ,10              。 //               //Meteor.setTimeout(abc,10000);

코드 다운로드 주소:http://download.csdn.net/detail/a6383277/7156971  또는 나의 github 프로젝트 Lesson (블 로그 원문 과 코드 는 Meteor 디 렉 터 리 에 있 습 니 다) 을 주목 하 십시오.  github.com/huyinghuan/Lesson
전재 출처 밝 혀 주세요. 감사합니다!

좋은 웹페이지 즐겨찾기