Cómo mostrar / actualizar Me gusta en Facebook usando Node.js
Al elaborar los códigos de muestra de la publicación anterior, es posible que tenga la sensación de cuál es el beneficio real de usar Node.js. En la publicación de hoy, incluimos un guión práctico que demuestra claramente el uso de Node.js en la programación basada en eventos..
Crearemos un script simple que genere la cantidad de "Me gusta de Facebook" de una página de Facebook en particular. Y además de eso, incluiremos una característica adicional que actualizará la cantidad de "me gusta de Facebook" cada 2 segundos.
La salida será simple y simple, probablemente se vea algo como esto: "Número de Me gusta: 2630405" y depende de usted darle estilo con el CSS, comencemos entonces!
Para darte una idea
Antes de sumergirnos en el uso de Node.js, tomemos un momento para pensar qué haríamos normalmente con los lenguajes de programación comunes del servidor (como PHP). Si está pensando en hacer una llamada AJAX para encontrar el número de gustos Cada 2 segundos, estás en lo cierto, pero esto puede potencialmente aumentar la sobrecarga del servidor.
Podemos considerar accediendo graph.facebook.com cual seria un operación de E / S que consume mucho tiempo. Considere 5 usuarios que acceden a la misma página (lo que da como resultado el número de gustos). El número de acceso a graph.facebook.com en 2 segundos se convertirá en 10, porque todos actualizarán su número de gustos una vez en 2 segundos y será ejecutado como un hilo separado.
Eso no es necesario con una implementación de servidor Node.js. Solamente Se requiere un acceso al servidor de Facebook y el tiempo para obtener y emitir el resultado (número de gustos) se puede reducir enormemente.
Sin embargo, ¿cómo vamos a implementar esto? Eso es lo que vamos a descubrir en las siguientes secciones..
Empezando
Antes de empezar, tu deberías tener Node.js instalado y ejecutándose en una cuenta de alojamiento web compatible con el entorno v8. Consulte los temas, "Introducción a Node.js" y "Instalación de Node.js" en nuestro artículo anterior, Guía para principiantes de Node.js, si no lo ha hecho..
En el servidor nosotros acceso graph.facebook.com
en un intervalo de 2 segundos y actualizar el número de gustos. Llamemos a esto como "Acción1". Prepararemos una página para que se actualice a través de AJAX cada 2 segundos..
Considere muchos usuarios que acceden a la misma página.. Para cada solicitud AJAX de un usuario, se adjunta un detector de eventos en el servidor para completar "ACTION1". Así que cada vez que se completa la "ACCIÓN1", se activarán los oyentes del evento..
Echemos un vistazo al código del lado del servidor..
Los códigos:
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 (function (request, response) var my_path = url.parse (request.url) .pathname; if (my_path === "/ getdata") var listener = facebook_emitter.once ("data", función (data) response.writeHeader (200, "Content-Type": "text / plain"); response.write (data); response.end ();); else load_file (my_path, response) ;). escuchar (8080); setInterval (get_data, 1000); sys.puts ("Server Running on 8080");
Códigos Explicación:
var facebook_client = my_http.createClient (80, "graph.facebook.com"); var facebook_emitter = new events.EventEmitter ();
Creamos un Cliente HTTP para acceder a las API de Facebook Graph facebook_client
. También necesitamos el EventEmitter ()
Función que se activará cuando se haya completado "ACTION1"..
Esto quedará claro en el código que se describe a continuación..
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 ();
Función obtener datos
obtiene datos de la llamada a la API de Facebook. Nosotros primero crear una solicitud GET utilizando la solicitud
Método de la siguiente sintaxis:
Client.request ('GET', 'get_url', "host": "host_url");
El número “19292868552” es el ID de Facebook de la página que necesitamos para acceder a sus detalles. Así que la página final a la que estamos tratando de acceder se convierte en: http://graph.facebook.com/19292868552. Después de hacer la solicitud necesitamos añade tres oyentes, respectivamente lo siguiente:
- Respuesta - Este escucha se activa cuando la solicitud comienza a recibir datos. Aquí ponemos el cuerpo de la respuesta a una cadena vacía..
- Datos - Como Node.js es asíncrono, los datos se reciben como fragmentos. Estos datos se agregan a la variable body para construir el cuerpo..
- Fin - Este escucha se activa cuando se completa el "ACTION1" especificado anteriormente. Los datos devueltos por la llamada de la API de Facebook Graph devuelven datos en formato JSON. Entonces convertimos la cadena a la matriz JSON usando la función de JavaScript
JSON.parse
.
Se puede ver que un oyente se adjunta para el event_emitter
objeto. Nosotros Necesito activarlo al final de la "ACCIÓN1". Activamos al oyente explícitamente con el método. 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", "likes": 2738595, "category": "Product / service", "website": "http://developers.facebook.com", "username": "platform", "found": "May 2007", "company_overview": "Facebook Platform permite a cualquier persona crear aplicaciones sociales en Facebook y en la web", "misión": "Hacer que la web sea más abierta y social". "estacionamiento": "street": 0, "lot": 0, "valet": 0,
Lo anterior representa la respuesta de la llamada API Graph de Facebook. Para obtener el número de gustos: tomar el objeto me gusta del objeto de datos, convertirlo en cadena y pasarlo a emitir
función.
Después de esta acción nos fin
la solicitud.
my_http.createServer (function (request, response) 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); ). escuchar (8080); setInterval (get_data, 1000);
Crear el servidor es similar al tutorial anterior, con un pequeño cambio. Para cada URL (excepto /obtener datos
) nosotros carga el archivo estático correspondiente usando el cargar archivo
función definimos anteriormente.
los http: // localhost: 8080 / getdata
es la URL de la solicitud AJAX. En cada solicitud AJAX nosotros adjuntar un detector de eventos a facebook_emitter
. Es similar a la addListener
pero el oyente muere después de que el oyente se emite para evitar una pérdida de memoria. Si necesitas comprobarlo solo Reemplace la una vez
con addListener
. También llamamos al obtener datos
Funciona una vez en 1 segundo por la función setInterval
.
A continuación, creamos la página HTML donde se muestra la salida..
Los códigos:
Me gusta en Facebook Número de Me gusta: Cargando…
Códigos Explicación:
La parte jQuery AJAX es bastante autoexplicativa. Echa un vistazo a la llamada de la load_content
función. Parece que es así está ejecutando un bucle infinito, y sí lo es. Así es como el número de gustos se actualiza a sí mismo.
Cada llamada AJAX se retrasará por el tiempo promedio de 1 segundo ya que el retraso en la activación de cada una de estas llamadas será de 1 segundo desde el servidor. La solicitud de AJAX estará incompleta durante ese segundo.
Así que ahí está: un método para retrasar una respuesta AJAX del servidor para obtener el número de Facebook gustos. Suelta la pregunta en nuestra sección de comentarios si tienes alguna duda o comentario, gracias.!
Nota del editor: Esta publicación está escrita por Geo paul para Hongkiat.com. Geo es un desarrollador web / iPhone independiente que disfruta trabajar con PHP, Codeigniter, WordPress, jQuery y Ajax. Tiene 4 años de experiencia en PHP y 2 años de experiencia en el desarrollo de aplicaciones para iPhone..