Parte 5 | Creando un sistema de chat sobre NodeJS con Socket.IO, ExpressJS, MongoDB, Foundation y Openshift

Ahora que tenemos nuestra aplicación de chat terminada, vamos a desplegarla sobre Openshift para poder utilizarla desde cualquier lugar y con cualquier persona.

Los pasos que seguimos para llegar hasta este punto, se detallan en cada uno de los articulos:

No es necesario pagar para poder desplegar nuestra aplicación en Openshift. Para hacerlo, crearemos una cuenta gratuita.

Registro y configuración en Openshift.

Puedes crear una cuenta en este enlace, el proceso es realmente sencillo y muy rapido. Una vez que tu cuenta este creada y activada. Deberas ver una pantalla similar a la siguiente al entrar a la página de administración de openshift.

Ahora creamos una nueva aplicación para NodeJS mediante el boton “Add Application…”. Cuando se nos pida elegir un Cartridge, elejimos “NodeJS” de la categoria “Other types”.

Choose nodejs cartridge

Posteriormente elegimos una url personalizada para nuestra aplicación, una ubicación geografica para desplegar y presionamos “Create Application”. Después de algunos segundos trabajando, nuestra aplicación estará creada.

En la página de configuración de nuestra aplicación añadimos MongoDB para que nuestra aplicación pueda funcionar.

Openshift Adding mongodb

Desplegando nuestra aplicación en Openshift.

Ahora ya podemos desplegar nuestro sistema de chat en Openshift, nuestra aplicación ya esta lista para funcionar solo agregamos lo siguiente en el servidor para indicar que debe conectarse al servidor mongodb que esta desplegado en Openshift junto con nuestra aplicacíón.

if (process.env.OPENSHIFT_MONGODB_DB_URL) {
  mongodbURL = process.env.OPENSHIFT_MONGODB_DB_URL
}

Y el siguiente fragmento para el arranque de la aplicación.

if (process.env.OPENSHIFT_NODEJS_IP && process.env.OPENSHIFT_NODEJS_PORT) {
  http.listen(process.env.OPENSHIFT_NODEJS_PORT, process.env.OPENSHIFT_NODEJS_IP, function() {
    console.log('Listening at openshift on port: ' + process.env.OPENSHIFT_NODEJS_PORT);
  });
}
else {
  http.listen(80, function () {
    console.log('Listing on port: 80')
  })
}

De manera que nuestro servidor ahora se ve de esta forma:

Ahora bien, para trabajar con el código de nuestra aplicación desplegada en openshift vamos a utilizar git. Hacemos lo siguiente:

  • Nuestra aplicación debe ser versionada por git, si no la tienes versionada, puedes hacerlo desde git en consola con el comando “git init” en la carpeta de tu aplicación. Agrega los ultimos cambios “git add *” y realiza un commit “git commit -m “Sistema de chat listo para openshift” “.
  • Copia la ruta del repositorio de openshift desde la página de aministración de la aplicación: Openshift Source code repo
  • Agregalo a la aplicacíón con el comando de git: “git remote add openshift -f <openshift-git-url>” reemplazando con la dirección de tu repositorio de git en openshift copiada en el paso anterior.
  • Ahora haremos un merge indicando que reemplace el código que hay en openshift con el código de nuestra aplicación. “git merge openshift/master -s recursive -X ours“. Si git te solicita introducir un mensaje, puedes agregar un comentario cualquiera como “Reemplazando el código de openshift con el sistema de chat actual“.
  • Por ultimo para desplegar la aplicacíon a openshift utiliza el comando: “git push openshift HEAD“, con esto openshift reiniciara el servidor, instalara las dependencias necesarias de nuestra aplicación y ejecutara el sistema de chat. Una vez finalizadas las operaciónes podremos acceder a nuestra aplicacíón mediante la url que nosotros mismos configuramos al crear nuestra aplicacíón en openshift.

Deployed to openshift

Ahora ya tenemos nuestro sistema desplegado en openshift. Si tienes algún problema al trabajar con git, te recomiendo visitar el articulo Comenzando con git y github, escrito hace algun tiempo en este blog. O comenta tus dudas en este articulo.

Visita el chat en linea.

Utiliza el chat que acabamos de desplegar para comentar tus dudas sobre el sistema o hablar de código y asuntos nerds sobre desarrollo con los seguidores del blog. Entra con este enlace desde cualquier dispositivo.

Por fin hemos llegado al final de esta serie de articulos. Si tienes problemas para terminar la aplicación, no dudes en pedir ayuda a través de los comentarios. Si se te ocurre agregar mas funcionalidad y caracteristicas a la aplicacíón. Cuentanos a todos en los comentarios.

Happy Coding !! 🙂

Anuncios

13 comentarios sobre “Parte 5 | Creando un sistema de chat sobre NodeJS con Socket.IO, ExpressJS, MongoDB, Foundation y Openshift

  1. Hola tu ejercicio de socket io esta muy bueno
    solo quisiera saber como se aplicaria auna conexion de mysql, y se podria crear grupos de chat cono facebook,selecionar a una persona y hablar unicamente con esa persona?

    1. Hola, que bueno que te guste, espero te haya servido para aprender.

      Si quieres usar MySQL solo es cuestión de cambiar la librería de mongodb por una de mysql y adaptar las funciones de los DAO para que trabajen bajo las reglas de la librería que sea que implementes. El resto del código no necesita cambios.

      Actualmente el chat consiste en una sola sala o grupo de conversación, para agregar otros es cuestión de agregar mas elementos a la interfaz grafica, mas eventos para el sistema de sockets y funciones extra en los DAOs. Tomando como base este ejercicio se puede lograr todo lo que planteas sin nececidad de aprender nuevos conceptos. Solo es cuestión de analizar y reutilizar lo que ya se ha expuesto en estos cinco articulos.

      ¿Que opinas?
      Saludos y mucho exito. 🙂

  2. Se gracias a estos tutos estoy aprendiendo node.js me ha servido fenomenal, ya he realizado en mi proyecto ha cambios de mysql, sin usar daos,pero = trato de adaptarlos a los daos, lo que estoy intentando hacer y me cuesta dificl es que en la sala de chat o grupo ,la persona que se logea pueda selecionar a una persona especifica en el chat y hable en privado con ella, se me hace difícil intentar eso.
    Por si aca tendras un tuto de node en español con todas sus casos, recién soy estudiante pero con node.js he aprendiendo javascript y los callback que no conocia

  3. Hola No logro que me funcione en openshif tengo una aplicacion con el puerto 8080 de openshif pero el soket.io segun leo trabaja en el puerto 8000 no se como lograr que escuche por los dos puertos, te agradezco tu ayuda

    1. Hola alejandro.
      Los puertos que debes utilizar para nodejs en openshift, estan definidos en el contenedor en variables de ambiente.

      Puedes ver en el articulo que en la linea 15 y 16 del archivo ‘server.js’ se relaciona socket.io con el modulo http de nodejs, de esta manera el trafico viajara por el mismo puerto que http. Posteriormente en la linea 197, se arranca la aplicación utilizando la IP y el puerto que estan definidos en las variables de ambiente del contenedor de openshift. (process.env.OPENSHIFT_NODEJS_PORT, process.env.OPENSHIFT_NODEJS_IP).
      De esta manera tu aplicación podra recibir tanto el trafico http como el trafico de los websockets.

  4. Hola, este ha sido un excelente tutorial… sin duda alguna me ha servido bastante.. gracias por compartir tus conocimientos con nosotros, Espero continues compartiendo ejemplos y comentarios para seguir aprendiendo!!

  5. Hola, he estado mirando tus tutoriales y la estructura de todos es interesante ya que es clara, son geniales. Llegué a estos buscando como elaborar un Hotspot con Raspberry y nodejs. Crees que podrías echarme una mano?
    La duda que tengo es: siguiendo la estructura de creación del CHAT, podría ejecutar un HTML de la parte de cliente para acceder a la raspberry a través de una IP.local y así indicarle des de allí a qué wifi me quiero conectar y tener acceso a internet?
    La intención es transportar sin cables la RPi y así poder configurarle en cualquier lugar la wifi a la que quiero acceder, des del móvil, pc, tablet…
    No sé si has trabajado con ArduinoYún, pero la configuración del wifi que tiene es lo que me interesaría, pero con RPi y nodejs.

    Muchas gracias!!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s