Kako prikazati / posodobiti »Facebook Likes« z uporabo Node.js
Z izdelavo vzorčnih kod iz prejšnje objave, boste morda dobili občutek, kaj je dejanska korist od uporabe Node.js. V današnji objavi smo vstavili praktični skript, ki jasno prikazuje uporabo Node.js v programiranju na osnovi dogodkov.
Ustvarjali bomo preprost skript, ki bo prikazal število "všečkov na Facebooku" določene strani Facebooka. Poleg tega pa bomo vstavili še dodatno funkcijo, ki bo posodabljala število "všečkov na Facebooku" na 2 sekundi.
Izhod bo preprost in navaden, verjetno izgleda nekako takole: "Število všečkov: 2630405" in od vas je odvisno, ali ga boste oblikovali s pomočjo CSS-ja.!
Da bi vam dali idejo
Preden se potopimo v uporabo Node.js, si vzemimo trenutek, da razmislimo, kaj bi običajno naredili s skupnimi programskimi jeziki na strani strežnika (kot je PHP). Če razmišljate o klicu AJAX, da najdete število rad v vsaki 2 sekundi - ste pravilni - vendar se to lahko zgodi potencialno povečanje stroškov strežnika.
Lahko razmislimo dostop graph.facebook.com ki bi bil a dolgotrajno V / I delovanje. Razmislite o 5 uporabnikih, ki dostopajo do iste strani (ki prikaže število rad). Število dostopov graph.facebook.com v 2 sekundah bo 10, ker bodo vsi posodobili svoje število rad enkrat v 2 sekundah in to bo izveden kot ločena nit.
To ni potrebno pri implementaciji strežnika Node.js. Samo potreben je en dostop do strežnika Facebook in čas, da dobite in oddate rezultat (število. \ t rad) se lahko močno zmanjša.
Vendar kako bomo to izvedli? To bomo ugotovili v spodnjih razdelkih.
Kako začeti
Preden začnemo, morate Node.js je nameščen in se izvaja na okolju prijaznem spletnem računu v8. Oglejte si teme »Uvod v Node.js« in »Namestitev Node.js« v prejšnjem članku, »Navodila za začetnike« v Node.js, če še niste.
V strežniku smo dostop graph.facebook.com
v razmaku 2 sekund in posodobite število rad. Pokličimo to kot "AKCIJA1"Pripravili bomo stran, tako da se bo posodabljala prek AJAX vsakih 2 sekund.
Upoštevajte, da veliko uporabnikov dostopa do iste strani. Za zahtevo AJAX vsakega uporabnika je v strežnik priključen poslušalec dogodka za dokončanje "ACTION1". Torej, ko je "ACTION1" končan, se sprožijo poslušalci dogodkov.
Oglejmo si kodo strani strežnika.
Kode:
var facebook_client = my_http.createClient (80, "graph.facebook.com"); var facebook_emitter = novi dogodki.EventEmitter (); funkcija get_data () var request = facebook_client.request ("GET", "/ 19292868552", "gostitelj": "graph.facebook.com"); request.addListener ("odziv", funkcija (odgovor) var body = ""; response.addListener ("podatki", funkcija (podatki) body + = data;); response.addListener ("konec", funkcija ( ) var data = JSON.parse (body); facebook_emitter.emit ("podatki", String (data.likes)););); request.end (); my_http.createServer (funkcija (zahteva, odgovor) var my_path = url.parse (request.url) .pathname, če (my_path === "/ getdata") var listener = facebook_emitter.once ("podatki", funkcija (data) response.writeHeader (200, "Content-Type": "text / plain"); response.write (data); response.end ();); else load_file (my_path, response) ;) poslušaj (8080); setInterval (get_data, 1000); sys.puts ("strežnik, ki deluje na 8080");
Kode Razlaga:
var facebook_client = my_http.createClient (80, "graph.facebook.com"); var facebook_emitter = novi dogodki.EventEmitter ();
Ustvarjamo Odjemalec HTTP za dostop do API-ja za Google Graph facebook_client
. Potrebujemo tudi EventEmitter ()
funkcija, ki se bo sprožila, ko se "ACTION1" konča.
To bo jasno navedeno v spodnji kodi.
funkcija get_data () var request = facebook_client.request ("GET", "/ 19292868552", "gostitelj": "graph.facebook.com"); request.addListener ("odziv", funkcija (odgovor) var body = ""; response.addListener ("podatki", funkcija (podatki) body + = data;); response.addListener ("konec", funkcija ( ) var data = JSON.parse (body); facebook_emitter.emit ("podatki", String (data.likes)););); request.end ();
Funkcija get_data
pridobiva podatke iz poziva API za Facebook. Najprej ustvarite zahtevo GET uporabljati prošnja
metoda naslednje sintakse:
Client.request ('GET', 'get_url', "gostitelj": "host_url");
Število “19292868552” je Facebook ID strani, ki jo potrebujemo za dostop do njenih podrobnosti. Zadnja stran, do katere poskušamo dostopati, je: http://graph.facebook.com/19292868552. Po tem, ko smo zahtevali, moramo dodajte tri poslušalce, naslednje: \ t
- Odgovor - Ta poslušalec se sproži, ko zahteva začne prejemati podatke. Tukaj nastavimo telo odgovora na prazen niz.
- Podatki - Ker je Node.js asinhroni, se podatki prejmejo kot kose. Ti podatki se dodajo spremenljivki telesa, da se zgradi telo.
- Konec - Ta poslušalec se sproži, ko je končano zgoraj navedeno "ACTION1". Podatki, ki jih vrne API za Graph Graph, vrnejo podatke v formatu JSON. Zato pretvorimo niz v niz JSON z uporabo funkcije JavaScript
JSON.parse
.
Vidite lahko, da je priključen poslušalec za event_emitter
predmet. Mi ga je treba sprožiti na koncu "ACTION1". Poslušalca eksplicitno sprožimo z metodo facebook_emitter.emit
.
"id": "19292868552", "name": "Platforma Facebook", "slika": "http://profile.ak.fbcdn.net/hprofile-ak-ash2/211033_19292868552_7506301_s.jpg", "povezava": "https://www.facebook.com/platform", "likes": 2738595, "category": "Product / service", "website": "http://developers.facebook.com", "username": "platforma", "ustanovljena": "maj 2007", "company_overview": "Platforma Facebooku omogoča vsakomur, da gradi družbene aplikacije na Facebooku in spletu." "parkiranje": "ulica": 0, "lot": 0, "sluga": 0,
Zgoraj je odgovor na klic API-ja za Google Graph API. Da bi dobili število rad: vzamemo objekt všečnosti podatkovnega objekta, pretvorite v niz in ga posredujte oddajajo
funkcijo.
Po tej akciji smo koncu
zahtevo.
my_http.createServer (funkcija (zahteva, odgovor) var my_path = url.parse (request.url) .pathname, če (my_path === "/ getdata") var listener = facebook_emitter.once ("data", funkcija ( data) response.writeHeader (200, "Content-Type": "text / plain"); response.write (data); response.end ();); else load_file (my_path, odziv); ) poslušaj (8080); setInterval (get_data, 1000);
Ustvarjanje strežnika je podobno prejšnji vadnici - z majhno spremembo. Za vsak URL (razen / getdata
) mi naložite ustrezno statično datoteko z uporabo load_file
funkcijo definirali smo prej.
The http: // localhost: 8080 / getdata
je URL za zahtevo AJAX. V vsaki AJAX zahtevi pripeti poslušalca dogodka facebook_emitter
. Podobno je addListener
ampak poslušalca se ubije, ko se poslušalec oddaja, da se prepreči uhajanje pomnilnika. Če jo morate preveriti zamenjajte enkrat
z addListener
. Imenujemo tudi get_data
Funkcija deluje enkrat v eni sekundi setInterval
.
Nato ustvarimo HTML stran, kjer se prikaže izhod.
Kode:
Facebook Likes Število priljubljenih: Nalaganje…
Kode Razlaga:
Del jQuery AJAX je precej samoumeven. Ali preverite klic load_content
funkcijo. Izgleda tako teče neskončna zanka, in da je. Tako je število rad se sam posodobi.
Vsak klic AJAX povprečno trajanje 1 sekunde ker bo zamuda pri sprožitvi vsakega takega klica 1 sekunda od strežnika. Zahteva AJAX bo za to sekundo v nepopolni obliki.
Torej, pojdite - metoda odložitve odziva AJAX-a s strežnika, da bi dobili številko Facebook rad. Spustite vprašanje v našo rubriko za komentarje, če imate kakršenkoli dvom ali misel, hvala!
Opomba urednika: To objavo je napisal Geo Paul za Hongkiat.com. Geo je neodvisni razvijalec spleta / iPhoneov, ki ima rad s PHP, Codeigniter, WordPress, jQuery in Ajax. Ima 4 leta izkušenj v PHP-ju in dve leti izkušenj z razvojem aplikacij iniPhone.