홈페이지 » 코딩 » Node.js를 사용하여 Facebook 좋아요를 표시 / 업데이트하는 방법

    Node.js를 사용하여 Facebook 좋아요를 표시 / 업데이트하는 방법

    이전 게시물의 샘플 코드를 작성하면 Node.js를 사용하면 실제로 이점이 무엇인지 알 수 있습니다. 오늘의 포스트에서 우리는 이벤트 기반 프로그래밍에서 Node.js의 사용을 명확하게 보여주는 실용적인 스크립트를 던집니다.

    우리는 특정 Facebook 페이지의 "Facebook 좋아하는"수를 출력하는 간단한 스크립트를 작성합니다. 그리고 그 위에 우리는 2 초마다 "Facebook 좋아요"의 수를 업데이트 할 추가 기능을 포기할 것입니다..

    결과물은 간단하고 평범하며 아마도 "좋아요 수 : 2630405"와 같이 보일 것입니다. CSS를 사용하여 스타일을 지정해야합니다. 시작해 보겠습니다.!

    당신에게 아이디어를주기

    Node.js를 사용하기 전에 일반적인 서버 측 프로그래밍 언어 (PHP와 같은)에서 일반적으로 수행 할 작업을 잠시 생각해 봅시다. 당신이 전화 번호를 찾기 위해 AJAX 호출을 할 생각이라면 좋아하는 사람 2 초마다 - 정확합니다. 그러나 이것은 잠재적으로 서버 오버 헤드가 증가합니다..

    우리는 고려할 수있다. 액세스 중 graph.facebook.com 그것은 시간 소모적 인 I / O 작업. 동일한 페이지에 액세스하는 5 명의 사용자를 고려해보십시오. 좋아하는 사람). 액세스 수 graph.facebook.com 모든 사람이 자신의 번호를 업데이트하므로 2 초 후에 10이됩니다. 좋아하는 사람 2 초 안에 한 번 별도의 스레드로 실행됩니다..

    Node.js 서버 구현에서는 이것이 필요하지 않습니다. 만 Facebook 서버에 한 번 액세스해야합니다. 그리고 결과를 얻고 출력하는 시간 ( 좋아하는 사람) 크게 줄일 수 있습니다.

    그러나 이것을 어떻게 구현할 것인가? 이것이 우리가 아래 섹션에서 알아낼 것입니다..

    시작하기

    시작하기 전에 Node.js를 v8 환경 지원 웹 호스팅 계정에 설치하여 실행하십시오.. 이전 기사 인 Node.js 초보자 안내서에서 "Node.js 시작하기"및 "Node.js 설치하기"항목을 확인하십시오..

    서버에서 우리는 접속하다 graph.facebook.com 2 초 간격으로~의 수를 업데이트하다 좋아하는 사람. 이것을 "활동 1"AJAX를 통해 2 초마다 업데이트되도록 페이지를 준비합니다..

    동일한 페이지에 액세스하는 많은 사용자를 고려하십시오.. 모든 사용자의 AJAX 요청에 대해 "ACTION1"완료를 위해 서버에 이벤트 리스너가 연결됩니다.. 따라서 "ACTION1"이 완료 될 때마다 이벤트 리스너가 트리거됩니다.

    서버 측 코드를 살펴 보겠습니다..

    코드 :

     var facebook_client = my_http.createClient (80, "graph.facebook.com"); var facebook_emitter = 새로운 이벤트 .EventEmitter (); 함수 get_data () var request = facebook_client.request ( "GET", "/ 19292868552",  "호스트": "graph.facebook.com"); response.addListener ( "end", function ()) Response.addListener ( "end", function  ) var data = JSON.parse (body); facebook_emitter.emit ( "data", String (data.likes)););); request.end ();  my_http.createServer (function (request, response) var my_path = url.parse (request.url) .pathname; if (my_path === "/ getdata") var listener = facebook_emitter.once ( "function" else_ load_file (my_path, response) (응답) end_file (응답) 응답 형식 ;). listen (8080); setInterval (get_data, 1000); sys.puts ( "8080에서 실행되는 서버"); 

    코드 설명 :

     var facebook_client = my_http.createClient (80, "graph.facebook.com"); var facebook_emitter = 새로운 이벤트 .EventEmitter (); 

    우리는 HTTP 클라이언트 Facebook Graph API에 액세스하는 방법 facebook_client. 우리는 또한 EventEmitter () "ACTION1"이 완료되었을 때 트리거되는 함수.

    이것은 아래에 설명 된 코드에서 명확해질 것입니다..

     함수 get_data () var request = facebook_client.request ( "GET", "/ 19292868552",  "호스트": "graph.facebook.com"); response.addListener ( "end", function ()) Response.addListener ( "end", function  ) var data = JSON.parse (body); facebook_emitter.emit ( "data", String (data.likes)););); request.end ();  

    기능 get_data Facebook API 호출에서 데이터 가져 오기. 먼저 GET 요청을 작성하십시오. ~을 사용하여 의뢰 다음 구문의 메소드 :

     Client.request ( 'GET', 'get_url',  "호스트": "host_url"); 

    수 “19292868552” 세부 정보에 액세스해야하는 페이지의 Facebook ID입니다. 그래서 우리가 접근하려고하는 마지막 페이지는 http://graph.facebook.com/19292868552입니다. 요청을 한 후에 우리는 3 명의 청취자를 추가하십시오., 각각 다음과 같습니다.

    1. 응답 - 이 청취자는 요청이 데이터 수신을 시작할 때 트리거됩니다. 여기에 응답의 본문을 빈 문자열로 설정합니다..
    2. 데이터 - Node.js는 비동기이므로 데이터는 청크로 수신됩니다. 이 데이터는 본문을 구성하는 본문 변수에 추가됩니다..
    3. 종료 - 이 리스너는 위에 지정된 "ACTION1"이 완료 될 때 트리거됩니다. Facebook Graph API 호출에 의해 반환 된 데이터는 JSON 형식의 데이터를 반환합니다. 따라서 JavaScript 함수를 사용하여 문자열을 JSON 배열로 변환합니다. JSON.parse.

    청취자가 event_emitter 목적. 우리 "액션 1"의 끝에서 그것을 트리거해야합니다.. 메소드를 사용하여 리스너를 명시 적으로 트리거합니다. facebook_emitter.emit.

      "id": "19292868552", "이름": "Facebook 플랫폼", "그림": "http://profile.ak.fbcdn.net/hprofile-ak-ash2/211033_19292868552_7506301_s.jpg", "link": "https://www.facebook.com/platform", "likes": 2738595, "카테고리": "제품 / 서비스", "웹 사이트": "http://developers.facebook.com", "username": "platform", "founded": "2007 년 5 월", "company_overview": "페이스 북 플랫폼은 누구나 페이스 북과 웹에 소셜 앱을 구축 할 수 있습니다.", "mission": "웹을 더 개방적이고 사교적으로 만들" "parking":  "street": 0, "lot": 0, "valet": 0,

    위는 Facebook Graph API 호출의 응답을 나타냅니다. 의 수를 얻기 위해서 좋아하는 사람: 데이터 객체의 likes 객체를 가져옵니다., 문자열로 변환그것을에 전달하십시오 방출하다 기능.

    이 조치를 취한 후에 종료 요청.

     my_http.createServer (function (request, response) var my_path = url.parse (request.url) .pathname; if (my_path === "/ getdata") var listener = facebook_emitter.once ( "data" 데이터) response.writeHeader (200,  "Content-Type": "text / plain"); response.write (data); ). listen (8080); setInterval (get_data, 1000); 

    서버를 생성하는 것은 이전 튜토리얼과 비슷하지만 약간의 변경이 필요합니다. 모든 URL에 대해 (예외 / getdata) 우리 해당 정적 파일을로드합니다. load_file 기능 이전에 정의한.

    그만큼 http : // localhost : 8080 / getdata AJAX 요청의 URL입니다. 각 AJAX 요청에서 우리는 이벤트 리스너를에 연결 facebook_emitter. 그것은 addListener 그러나 청취자 메모리 누수를 피하기 위해 리스너가 방출 된 후에 kill됩니다.. 너가 다만 그것을 체크 아웃 할 필요가있는 경우에 교체 일단addListener. 우리는 또한 get_data 함수에 의해 1 초에 한 번 기능한다. setInterval.

    다음으로 출력이 표시되는 HTML 페이지를 만듭니다..

    코드 :

        페이스 북은 좋아한다.     

    좋아요 수 : 로드 중 ...

    코드 설명 :

    jQuery AJAX 부분은 매우 자명하다. 전화 문의를 확인하십시오. load_content 기능. 그것은 그것 같이 본다 무한 루프를 돌고있다., 그렇습니다. 그것이 얼마나 많은 좋아하는 사람 업데이트 됨.

    각 AJAX 호출 평균 1 초 지연됩니다. 이러한 각 호출의 실행 지연은 서버로부터 1 초가되기 때문입니다. AJAX 요청은 1 초 동안 불완전한 형태로 될 것입니다..

    그래서 거기에 당신이가는 - 페이스 북의 번호를 얻기 위해 서버에서 AJAX 응답을 연기하는 방법 좋아하는 사람. 의심이나 생각이 든다면 우리의 코멘트 섹션에 질문을 버리십시오, 감사합니다.!

    편집자 주 : 이 게시물은에 의해 작성됩니다 지오 폴 Hongkiat.com. Geo는 PHP, Codeigniter, WordPress, jQuery 및 Ajax로 작업하는 것을 즐기는 독립적 인 웹 / iPhone 개발자입니다. 그는 PHP 분야에서 4 년의 경력을 쌓았으며 iniPhone 어플리케이션 개발 분야에서 2 년의 경력을 쌓았습니다..