Домашняя » кодирование » Как отобразить / обновить «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 который был бы трудоемкая операция ввода / вывода. Рассмотрим 5 пользователей, обращающихся к одной и той же странице (которая выводит количество нравится). Номер доступа к graph.facebook.com через 2 секунды станет 10, потому что каждый будет обновлять свой номер нравится один раз в 2 секунды, и это будет выполнен как отдельный поток.

    В реализации сервера Node.js это не обязательно. Только требуется один доступ к серверу Facebook и время, чтобы получить и вывести результат (количество нравится) может быть значительно уменьшен.

    Тем не менее, как мы собираемся реализовать это? Это то, что мы собираемся выяснить в разделах ниже.

    Начиная

    Прежде чем мы начнем, ваш должен Node.js установлен и работает на поддерживаемой средой v8 учетной записи веб-хостинга. Изучите темы «Начало работы с Node.js» и «Установка Node.js» в нашей предыдущей статье, Руководство для начинающих по Node.js, если вы еще этого не сделали..

    На сервере мы доступ graph.facebook.com с интервалом в 2 секунды а также обновить количество нравится. Давайте назовем это какДЕЙСТВИЙ1Msgstr "Мы подготовим страницу так, чтобы она обновлялась через AJAX каждые 2 секунды..

    Рассмотрим много пользователей, получающих доступ к той же странице. Для каждого AJAX-запроса пользователя на сервере подключается прослушиватель событий для завершения «ACTION1». Таким образом, всякий раз, когда «ACTION1» завершается, слушатели события будут вызваны.

    Давайте посмотрим на код на стороне сервера.

    Коды:

     var facebook_client = my_http.createClient (80, "graph.facebook.com"); var facebook_emitter = new events.EventEmitter (); function get_data () var request = facebook_client.request ("GET", "/ 19292868552", "host": "graph.facebook.com"); request.addListener ("response", function (response) var body = ""; response.addListener ("data", function (data) body + = data;); response.addListener ("end", function ( ) var data = JSON.parse (body); facebook_emitter.emit ("data", String (data.likes)););); request.end ();  my_http.createServer (функция (запрос, ответ) var my_path = url.parse (request.url) .pathname; if (my_path === "/ getdata") var listener = facebook_emitter.once ("data", функция (data) response.writeHeader (200, "Content-Type": "text / plain"); response.write (data); response.end ();); else load_file (my_path, response) ;). listen (8080); setInterval (get_data, 1000); sys.puts («Сервер работает на 8080»); 

    Коды Пояснение:

     var facebook_client = my_http.createClient (80, "graph.facebook.com"); var facebook_emitter = new events.EventEmitter (); 

    Мы создаем HTTP-клиент получить доступ к Facebook Graph API facebook_client. Нам также нужно EventEmitter () функция, которая сработает, когда "ACTION1" завершится.

    Это будет ясно в коде, описанном ниже.

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

    функция получить данные извлекает данные из вызова API Facebook. Мы первые создать запрос GET с использованием запрос метод следующего синтаксиса:

     Client.request ( 'GET', 'get_url',  "хозяин": "host_url"); 

    Число “19292868552” это идентификатор Facebook страницы, которая нам нужна для доступа к ее данным. Таким образом, последняя страница, к которой мы пытаемся получить доступ, становится: http://graph.facebook.com/19292868552. После оформления запроса нам нужно добавить три слушателя к нему, соответственно следующее:

    1. отклик - Этот прослушиватель запускается, когда запрос начинает получать данные. Здесь мы устанавливаем тело ответа на пустую строку.
    2. Данные - Поскольку Node.js является асинхронным, данные принимаются в виде фрагментов. Эти данные добавляются в переменную body для построения тела.
    3. Конец - Этот прослушиватель запускается, когда «ACTION1», указанный выше, завершен. Данные, возвращаемые вызовом API Graph Facebook, возвращают данные в формате JSON. Таким образом, мы конвертируем строку в массив JSON, используя функцию JavaScript JSON.parse.

    Вы можете видеть, что слушатель прикреплен к event_emitter объект. Мы нужно вызвать его в конце «ДЕЙСТВИЯ1». Мы запускаем слушателя явно с помощью метода facebook_emitter.emit.

     "id": "19292868552", "name": "Facebook Platform", "picture": "http://profile.ak.fbcdn.net/hprofile-ak-ash2/211033_19292868552_7506301_s.jpg", "link": "https://www.facebook.com/platform", "лайки": 2738595, "категория": "Продукт / услуга", "сайт": "http://developers.facebook.com", "имя пользователя": «платформа», «основано»: «май 2007», «company_overview»: «платформа Facebook позволяет любому создавать социальные приложения на Facebook и в Интернете», «миссия»: «сделать сеть более открытой и социальной.», "parking": "street": 0, "lot": 0, "valet": 0,

    Выше представлен ответ на вызов API Graph Facebook. Для того, чтобы получить количество нравится: взять объект лайков объекта данных, преобразовать его в строку а также передать это испускают функция.

    После этого действия мы конец запрос.

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

    Создание сервера аналогично предыдущему уроку - с небольшими изменениями. Для каждого URL (кроме /получить данные) мы загрузить соответствующий статический файл, используя load_file функция мы определили ранее.

    HTTP: // локальный: 8080 / GetData URL для запроса AJAX В каждом AJAX-запросе мы присоединить слушателя события к facebook_emitter. Это похоже на добавления слушателя но слушатель убит после того, как слушатель выпущен, чтобы избежать утечки памяти. Если вам нужно проверить это просто заменить один раз с добавления слушателя. Мы также называем получить данные функция один раз в 1 секунду функцией setInterval.

    Далее мы создаем HTML-страницу, на которой отображается вывод.

    Коды:

        Facebook любит     

    Количество лайков: Loading ...

    Коды Пояснение:

    Часть jQuery AJAX довольно понятна. Проверьте вызов load_content функция. Похоже это работает бесконечный цикл, и да, это так. Вот как количество нравится обновляется сам.

    Каждый звонок AJAX будет задерживаться на среднее время в 1 секунду так как задержка запуска каждого такого вызова будет 1 секунда с сервера. Запрос AJAX будет в неполной форме в течение этой 1 секунды.

    Итак, вы идете - метод задержки ответа AJAX с сервера, чтобы получить номер Facebook нравится. Оставьте вопрос в нашем разделе комментариев, если у вас есть какие-либо сомнения или мысли, спасибо!

    Примечание редактора: Этот пост написан Гео Пол для Hongkiat.com. Geo - независимый веб-разработчик / iPhone, который любит работать с PHP, Codeigniter, WordPress, jQuery и Ajax. Имеет 4-летний опыт работы с PHP и 2-летний опыт разработки приложений для iPhone..