Blog Detail

Intel Galileo – Enviar datos a un sitio web usando NodeJS

29 Oct , 2014,
José Núñez
, , , , , ,
8 comments

Espero en unos días publicar un tutorial más completo sobre el uso de NodeJS en Intel Galileo.

Por el momento les presento este código de prueba.

var request = require('request'); //Referencia a la librería "request" de nodejs
var i = 0; //variable para contar
var timer = {};
test();
function test(){
   i++;
   var busqueda='costa rica makers';
   var url= 'http://www.google.com/';
   url += '?q=' + busqueda;
   url += '&veces=' + i; //un parametro adicional cualquiera

   request(url , function (error, response, body){
      if (!error && response.statusCode == 200) { //EXITO
         console.log(body);
      } else { //ERROR
         console.log(response);
         console.log(error);
      }
   timer = setTimeout(test,2000); //VOLVER A LLAMAR EN 2 SEGUNDOS
 });
}

Configurando nodeJS y la librería Request

Para que el script anterior funcione, la libreria request debe estar disponible. Digamos que creamos una carpeta particular para la prueba: ~/nodejs_test01 ( o lo que es lo mismo /home/root/nodejs_test01/)

Para esto es necesario instalar la libreria usando la utilidad npm, pero para esto es necesario tambien que el Galileo tenga la fecha y hora correctas.

Entonces, ejecute estos pasos en el linux del Galileo:

date 1029114114
El comando anterior, configura la fecha del galileo a OCT-29-2014, a las 11:41 de la mañana. Si su fecha/hora fuera el primero de diciembre de 2014 a las 3:30pm podria ejecutar esto:  date 1201153014  donde los cuatro primeros caracteres son DIC-01, los siguientes cuatro caracteres son 15:30, y el ultimo juego de dos caracteres es el año 2014.

npm install request
Esta operación puede tardar varios minutos, básicamente descarga la libreria del repositorio de NPM

wget http://costaricamakers.com/wp-content/uploads/2014/10/test_request.js
Esto descarga el programa test_request.js en la carpeta seleccionada.

Ejecutando el programa

Para ejecutar el programa, primero almacénelo en la carpeta de pruebas que hicimos “~/nodejs_test01/request_test.js”

Luego ejecute el siguiente código:

node request_test.js

Listo, el programa empezará a llamar al sitio web de google con la pregunta “costa rica makers”

Para detener el programa utilice las teclas CTRL+C

4,004 total views, 3 views today

8 Comments

  1. Rodrigo abril 21, 2015 at 9:24 am Reply

    Hola!,

    Tengo una consulta, ya que me estoy dando de golpes con la misma librería y quizás sea algo muy simple y mas que nada un tema conceptual.

    Pero estoy intentando hacer la invocación via get de una URL y la respuesta (body) almacenarlo en una variable pero no he tenido éxito, todos los ejemplos que encuentro lo tiran por consola y yo necesito lo anterior, depositar el resultado de la invocación en una variable.

    Puedes ayudarme?

  2. Jose Nunez abril 21, 2015 at 9:29 am Reply

    Hola Rodrigo, claro con gusto. Voy a hacer algunas pruebas para luego ampliar esta respuesta.

    Básicamente el resultado de una invocación WEB debería estar incluido en la variable response de la linea 12 del ejemplo.

    ¿estás usando NODEJS? ¿Estás usando Intel Edison o Galileo?

  3. Rodrigo abril 21, 2015 at 9:38 am Reply

    uso NodeJS, la verdad iniciándome en NodeJS antes había trabajado con Javascript Server Side y el motor netscape y posterior a eso con JS Client Side v1.0 de Netscape hasta los día de hoy. Pero creo que tengo mas que nada un enrredo con Node JS, no se porque me complique tanto, quizas solo falta de sueño… Por cierto conoces de algún RAID para NodeJS? donde puedas depurar el código.

  4. Rodrigo abril 21, 2015 at 9:46 am Reply

    Jose,

    Creo que descubrí la razón de mi mareo y es el asyncronismo jajaja, pero mira esto era lo que intentaba hacer (servirá a alguien mas, claro esta desordenado…)

    var request = require(‘request’);
    var util = require(“util”);

    // Set the headers
    var headers = {
    ‘User-Agent’: ‘Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5’,
    ‘Accept-Language’: ‘es-ES,es;q=0.5’
    }

    // Configure the request

    var options = {
    url: ”,
    method: ‘GET’,
    headers: headers,
    qs: {”: ‘1’},
    debug:true
    }

    var retInfo=””;
    function setRespuesta(data){
    retInfo=data;
    }
    fn = function(error, response, body) {
    if (!error && response.statusCode == 200) {
    this.responseBody = body;
    setRespuesta(body);
    }
    }

    var myReq = request(options, fn);

    timer=setTimeout(function (){
    console.log(“—————————————————————“);
    console.log(retInfo);
    clearTimeout(timer);
    },5000);

  5. Rodrigo abril 21, 2015 at 9:47 am Reply

    Conoces algún RAID, IDE un ambiente grafico con depurador que pueda ser usado con Node JS porque bloc de notas no rula mucho 😛

  6. Jose Nunez abril 21, 2015 at 9:50 am Reply

    Excelente. Si en efecto, el asincronismo muerde a veces… 🙂

    … y si, está desordenado ja ja

    Yo personalmente no uso mucho javascript step-by-step debugging.

    Si uso Netbeans por el intelisense y otras virtudes.

    Saludos

  7. Jose Nunez abril 21, 2015 at 9:52 am Reply

    has usado JSFiddle? (http://jsfiddle.net/) Me parece una buena forma de compartir código y probarlo de una.

  8. Rodrigo abril 21, 2015 at 11:55 am Reply

    No lo he utilizado, lo conozco si, pero mas que nada busco un debugger porque armare una aplicacion bastante compleja y requerire debugging, y no hace mucho he terminado un proyecto con GWT y quede enfermo con los print al log para revisar codigo.

Leave A Comment