Úvodná » kódovanie » Ako zobraziť / aktualizovať Páči sa Facebooku Použitie Node.js

    Ako zobraziť / aktualizovať Páči sa Facebooku Použitie Node.js

    Vypracovaním vzorových kódov z predchádzajúceho príspevku môžete mať pocit, aký je skutočný prínos používania Node.js. V dnešnom príspevku uvádzame praktický skript, ktorý jasne demonštruje použitie programu Node.js v programovaní založených na udalostiach.

    Vytvoríme jednoduchý skript, v ktorom sa zobrazí počet stránok typu "Facebook likes" na konkrétnej stránke na Facebooku. A navyše pridáme ďalšiu funkciu, ktorá každých 2 sekundy aktualizuje počet "Facebookov".

    Výstup bude jednoduchý a jednoduchý, pravdepodobne vyzerá niečo takto: "Number of Likes: 2630405" a je na vás, aby ste ho použili pomocou CSS, začneme potom!

    Ak chcete dať vám ideu

    Než sa ponoríme do používania Node.js, poďme si chvíľu premyslieť, čo by sme normálne robili s bežnými programovacími jazykmi na strane servera (ako PHP). Ak uvažujete o uskutočnení volania AJAX, nájdite číslo záľuby každých 2 sekundy - máte pravdu - ale to môže potenciálne zvýšiť režijné náklady servera.

    Môžeme zvážiť prístupu graph.facebook.com čo by bolo a časovo náročná I / O prevádzka. Zvážte 5 používateľov, ktorí pristupujú na rovnakú stránku (čím sa zobrazuje číslo záľuby). Počet prístupov k graph.facebook.com za 2 sekundy sa stane 10, pretože každý bude aktualizovať svoje číslo záľuby raz za 2 sekundy a to bude vykonaná ako samostatná niť.

    To nie je potrebné pri implementácii servera Node.js. iba je potrebný jeden prístup na server Facebook a čas na získanie a výstup výsledku (počet záľuby) môže byť výrazne znížená.

    Ako to však budeme realizovať? To sa dozvieme v nižšie uvedených sekciách.

    Začíname

    Než začneme, mali by ste to majú Node.js nainštalované a spustené na webovom hostiteľskom účte podporovanom v8 prostredím. Pozrite si témy "Začíname s Node.js" a "Inštalácia Node.js" v našom predchádzajúcom článku, Príručka pre začiatočníkov na Node.js, ak nemáte.

    Na serveri sme prístup graph.facebook.com v intervale 2 sekúnd a aktualizovať číslo záľuby. Povedzme to ako "action1"Pripravíme stránku tak, aby sa aktualizovala prostredníctvom AJAX každých 2 sekundy.

    Vezmite do úvahy, že mnoho používateľov pristupuje k rovnakej stránke. Pre žiadosť AJAX každého používateľa je na serveri pripojený poslucháč pre dokončenie "ACTION1". Takže vždy, keď je dokončená akcia "ACTION1", spúšťajú sa poslucháči udalostí.

    Poďme sa pozrieť na kód na strane servera.

    Kódy:

     var facebook_client = môj_http.createClient (80, "graph.facebook.com"); var facebook_emitter = nové udalosti.EventEmitter (); funkcia get_data () var request = facebook_client.request ("GET", "/ 19292868552", "host": "graph.facebook.com"); request.addListener ("odpoveď", funkcia (odpoveď) var body = ""; response.addListener ("dáta", funkcia (data) body + = data; ) var dáta = JSON.parse (body); facebook_emitter.emit ("dáta", String (data.likes)););); request.end ();  my_http.createServer (funkcia (požiadavka, odpoveď) var my_path = url.parse (request.url) .pathname; if (my_path === "/ getdata") var listener = facebook_emitter.once (dáta) response.writeHeader (200, "Content-Type": "text / plain"); reply.write (data); response.end ();) else load_file (my_path, ;), počúvajte (8080); setInterval (get_data, 1000); sys.puts ("Server beží na 8080"); 

    Kódy Vysvetlenie:

     var facebook_client = môj_http.createClient (80, "graph.facebook.com"); var facebook_emitter = nové udalosti.EventEmitter (); 

    Vytvárame HTTP klient na prístup k API aplikácie Facebook Graph facebook_client. Tiež potrebujeme EventEmitter () funkcia, ktorá sa spustí po dokončení činnosti "ACTION1".

    To bude jasné v nižšie popísanom kóde.

     funkcia get_data () var request = facebook_client.request ("GET", "/ 19292868552", "host": "graph.facebook.com"); request.addListener ("odpoveď", funkcia (odpoveď) var body = ""; response.addListener ("dáta", funkcia (data) body + = data; ) var dáta = JSON.parse (body); facebook_emitter.emit ("dáta", String (data.likes)););); request.end ();  

    funkcie get_data načíta údaje z volania API Facebook. Najprv sme vytvorte požiadavku GET pomocou žiadosť metóda nasledujúcej syntaxe:

     Client.request ( 'GET', 'GET_URL',  "hostiteľ": "host_url"); 

    Číslo “19292868552” je ID stránky na Facebooku, ktoré potrebujeme na prístup k jeho údajom. Takže posledná stránka, ku ktorej sa snažíme pristupovať, sa stáva: http://graph.facebook.com/19292868552. Po podaní žiadosti musíme pridajte k nej troch poslucháčov, resp.

    1. odpoveď - Tento poslucháč sa spustí, keď požiadavka začne prijímať dáta. Tu nastavíme telo odpovede na prázdny reťazec.
    2. údaje - Keďže Node.js je asynchrónny, dáta sú prijaté ako bloky. Tieto údaje sa pridajú do premennej tela a vytvoria telo.
    3. Koniec - Tento poslucháč sa spustí po dokončení vyššie uvedenej "ACTION1". Údaje vrátené volaním rozhrania Facebook Graph API vracajú údaje vo formáte JSON. Takže konvertujeme reťazec na pole JSON pomocou funkcie JavaScript JSON.parse.

    Môžete vidieť, že pre poslucháča je pripojený event_emitter objekt. my musíte ho spustiť na konci "ACTION1". Prichádza k vysielaniu explicitne s touto metódou facebook_emitter.emit.

     "id": "19292868552", "meno": "Facebook Platform", "obrázok": "http://profile.ak.fbcdn.net/hprofile-ak-ash2/211033_19292868552_7506301_s.jpg", "link": "https://www.facebook.com/platform", "likes": 2738595, "kategória": "Produkt / služba", "webová stránka": "http://developers.facebook.com", "username": "platforma", "založená": "máj 2007", "company_overview": "Platforma Facebook umožňuje komukoľvek stavať sociálne aplikácie na Facebooku a na webe.", "misia": "Vytvoriť otvorenejší a sociálnejší web" "parkovanie": "street": 0, "lot": 0, "komorník": 0,

    Vyššie uvedené je odpoveďou volania rozhrania Facebook Graph API. Ak chcete získať číslo záľuby: vziať objekt typu likes dátového objektu, previesť na reťazec a prejdite na to vyžarovať funkcie.

    Po tejto akcii sme koniec požiadavka.

     my_path === "/ getdata") var listener = facebook_emitter.once ("data", funkcia (požiadavka, odpoveď) var my_path = url.parse (request.url) dáta) response.writeHeader (200, "Content-Type": "text / plain"); ), počúvajte (8080); setInterval (get_data, 1000); 

    Vytvorenie servera je podobné predchádzajúcemu návodu - s malou zmenou. Pre každú adresu URL (okrem / getdata) my nahrajte príslušný statický súbor pomocou load_file funkcie sme definovali skôr.

    http: // localhost: 8080 / getdata je adresa URL žiadosti AJAX. V každej žiadosti AJAX sme pripojiť poslucháča udalosti facebook_emitter. Je to podobné addListener ale poslucháčov je zabitý po vysielaní poslucháča, aby sa zabránilo úniku pamäte. Ak ho potrebujete skontrolovať nahraďte akonáhle s addListener. Tiež nazývame get_data funkcia raz za 1 sekundu setInterval.

    Potom vytvoríme HTML stránku, na ktorej sa zobrazí výstup.

    Kódy:

        Facebook Páči sa mi     

    Počet želaní: Načítava…

    Kódy Vysvetlenie:

    Časť jQuery AJAX je celkom samozrejmá. Uistite sa, že hovor na load_content Funkcie. Vyzerá to tak beží nekonečná slučka, a áno. Takto je počet záľuby sa aktualizuje sám.

    Každý hovor AJAX bude oneskorená o priemernú dobu 1 sekundy pretože oneskorenie spustenia každého takéhoto volania bude 1 sekunda od servera. Žiadosť AJAX bude v neúplnej forme po dobu 1 sekundy.

    Takže tam ísť - metóda oneskorenia AJAX odpoveď zo servera získať počet Facebook záľuby. Ak máte akékoľvek pochybnosti alebo myslenie, poďakujte otázku v našej sekcii komentárov!

    Poznámka redaktora: Tento príspevok je napísaný používateľom Geo Paul pre Hongkiat.com. Geo je nezávislý vývojár na web / iPhone, ktorý má prácu s PHP, Codeigniter, WordPress, jQuery a Ajax. Má 4 roky skúseností v PHP a 2 roky skúseností s vývojom aplikácií iniPhone.