Начална » кодиране на стоките » Как да се показват / актуализират Facebook Likes Използване на Node.js

    Как да се показват / актуализират Facebook Likes Използване на Node.js

    Чрез изработване на примерните кодове от предишния пост може да получите усещането каква е реалната полза от използването на Node.js. В днешния пост, ние хвърляме в практически скрипт, който ясно демонстрира използването на Node.js в събитие-базирано програмиране.

    Ще създадем прост скрипт, който извежда броя на „харесвания във Facebook“ на дадена страница във Facebook. И на всичкото отгоре, ще добавим допълнителна функция, която ще актуализира броя на "харесвания във Facebook" на всеки 2 секунди.

    Изходът ще бъде прост и обикновен, вероятно изглежда по следния начин: "Брой харесвания: 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", "host": "graph.facebook.com"); request.addListener ("отговор", функция (отговор) var body = ""; response.addListener ("данни", функция (данни) body + = data;); response.addListener ("край", функция ( ) var data = JSON.parse (body); facebook_emitter.emit ("данни", String (data.likes)););); request.end ();  my_http.createServer (функция (заявка, отговор) var my_path = url.parse (request.url) .pathname, ако (my_path === "/ getdata") var listener = facebook_emitter.once ("данни", (data) response.writeHeader (200, "Content-Type": "текст / обикновен"); response.write (data); response.end ();); else load_file (my_path, response) слушайте (8080); setInterval (get_data, 1000); sys.puts ("Сървър, работещ на 8080"); 

    Кодове Обяснение:

     var facebook_client = my_http.createClient (80, "graph.facebook.com"); var facebook_emitter = нови събития.EventEmitter (); 

    Ние създаваме a HTTP клиент за достъп до API на Facebook Graph facebook_client. Ние също се нуждаем от EventEmitter () функция, която ще се задейства, когато "ACTION1" завърши.

    Това ще стане ясно в описания по-долу код.

     функция get_data () var request = facebook_client.request ("GET", "/ 19292868552", "host": "graph.facebook.com"); request.addListener ("отговор", функция (отговор) var body = ""; response.addListener ("данни", функция (данни) body + = data;); response.addListener ("край", функция ( ) var data = JSON.parse (body); facebook_emitter.emit ("данни", String (data.likes)););); request.end ();  

    функция get_data извлича данни от извикването на API за Facebook. Ние първо създайте GET заявка използвайки поискване метод със следния синтаксис:

     Client.request ( "СЕ", "GET_URL"  "гостоприемник": "host_url"); 

    Броя “19292868552” е Facebook ID на страницата, която ни е необходима за достъп до нейните данни. Така че последната страница, която се опитваме да получим, става: http://graph.facebook.com/19292868552. След като направим искането, трябва добавете три слушатели към него, съответно следното:

    1. отговор - Този слушател се задейства, когато заявката започне да получава данни. Тук задаваме тялото на отговора на празен низ.
    2. Данни - Тъй като Node.js е асинхронен, данните се получават като парчета. Тези данни се добавят в променливата на тялото, за да се изгради тялото.
    3. Край - Този слушател се задейства, когато е завършено посоченото по-горе „ACTION1“. Данните, върнати от извикването на API на Graph на Facebook, връщат данни в JSON формат. Така конвертираме низа в JSON масив, използвайки JavaScript функцията JSON.parse.

    Можете да видите, че слушателят е прикрепен за event_emitter обект. ние трябва да я задействате в края на „ACTION1“. Ние задействаме слушателя изрично с метода facebook_emitter.emit.

     "id": "19292868552", "name": "Платформа на Facebook", "картинка": "http://profile.ak.fbcdn.net/hprofile-ak-ash2/211033_19292868552_7506301_s.jpg", "връзка": „https://www.facebook.com/platform“, „likes“: 2738595, „категория“: „Продукт / услуга“, „уебсайт“: „http://developers.facebook.com“, „потребителско име“: "платформа", "основава": "Май 2007", "company_overview": "Платформата на Facebook позволява на всеки да изгражда социални приложения във Facebook и в мрежата.", "мисия": "За да направите мрежата по-отворена и социална.", "паркинг": "улица": 0, "лот": 0, "вале": 0,

    Посоченото по-горе представлява отговорът на извикването на API на графиката във Facebook. За да получите броя на харесвания: вземете обектът "харесва" на обекта на данни, конвертирайте го в низ и го предайте излъчват функция.

    След това действие ние край запитването.

     my_http.createServer (функция (заявка, отговор) var my_path = url.parse (request.url) .pathname, ако (my_path === "/ getdata") var listener = facebook_emitter.once ("данни", функция ( data) response.writeHeader (200, "Content-Type": "текст / обикновен"); response.write (data); response.end ();); else load_file (my_path, response); слушайте (8080); setInterval (get_data, 1000); 

    Създаването на сървъра е подобно на предишния урок - с малка промяна. За всеки URL адрес (с изключение на / getdata) ние заредете съответния статичен файл с помощта на load_file функция дефинирахме по-рано.

    Най- HTTP: // Localhost: 8080 / getdata е URL адресът за AJAX заявката. Във всяка AJAX заявка ние да прикачите слушател на събитие facebook_emitter. Тя е подобна на addListener но слушателя е убит след излъчване на слушателя, за да се избегне изтичане на памет. Ако трябва да го проверите просто замени веднъж с addListener. Ние също наричаме get_data функция веднъж в 1 секунда от функцията setInterval.

    След това създаваме HTML страницата, на която се показват изходните данни.

    Кодовете:

        Обича Facebook     

    Брой харесвания: Зареждане…

    Кодове Обяснение:

    JQuery AJAX частта е доста очевидна. Проверете обаждането на load_content функция. Изглежда така работи безкраен цикъл, и да. Ето какъв е броят на харесвания се обновява.

    Всяко повикване AJAX ще се забави със средното време от 1 секунда тъй като забавянето на задействането на всеки такъв разговор ще бъде 1 секунда от сървъра. AJAX заявката ще бъде в непълна форма за тази 1 секунда.

    Така че ето - метод за забавяне на AJAX отговор от сървъра, за да получите броя на Facebook харесвания. Пуснете въпроса в нашия раздел за коментари, ако имате някакви съмнения или мисли, благодаря!

    Бележка на редактора: Тази публикация е написана от Гео Пол за Hongkiat.com. Geo е независим разработчик на уеб / iPhone, който работи с PHP, Codeigniter, WordPress, jQuery и Ajax. Той има 4-годишен опит в PHP и 2 години опит в разработката на iniPhone приложения.