Chat with Socket.IO

Hace un tiempo vi un tutorial para crear un chat con socket.io en tiempo real sin la necesidad de almacenar la conversación en una base pero no lo entendí en su momento.

La verdad es que era fácil de implementar y lo probé en mi PC. Después quise lograr dos cosas más:

  1. El ejemplo que tenía no se veía bien en un teléfono porque el ejemplo no estaba desarrollado con un diseño adaptativo.
  2. Guardar la conversación en una base para guardar un historial.

Así que pillé otro tutorial donde justamente guardaba la conversación en una base remota en mongodb (cosa que tampoco había probado jamás). Y la verdad es que me costó mucho menos implementar esto que hacer el diseño “adaptativo”.

Así fue que traté de unir los tutoriales y lo subí a GitHub, al menos para tener mis avances en algún lado.

En resumen, para hacer funcionar el chat es necesario:

  • Tener Node instalado
  • Instalar localmente express con npm install express --save
  • Instalar localmente mongoose con npm install mongoose --save
  • Hacerse una cuenta en mlab.com (con un plan sandbox que es gratis) para tener acceso a una base de datos mongodb remota o algo que sea similar.
  • Crear un archivo local llamado credentials.js que contenga la url de conexión.

El archivo “credentials.js” se vería más o menos así:

module.exports = {
    MONGOURL: 'mongodb+srv://<db_name>:<password>@chat-qypoo.gcp.mongodb.net/test?retryWrites=true&w=majority'
};

donde reemplazan los dos campos entre <> con la base de datos y la contraseña.

Dejé en Heroku una demo para probar la funcionalidad. Igual es obvio que falta mucho para que esto quede más decente pero tengo pensado hacer otra cosa la semana de fiestas patrias, un proyectito parecido que espero que me resulte útil en el día a día. Esto lo veo más como un proyecto que hice para aprender a conectarme y ver funcionando un objeto en MongoDB y cómo funciona Socket.IO. Es entretenido ver cómo con tan pocas líneas de código se puede hacer funcionar un chat en tiempo real sin una base de datos común y corriente.

Mi código, por si alguien lo quisiera ver, más que nada para aprender.

Nota: Buscando algo en castellano que pudiera servir para entender cómo funciona Socket.IO en un chat, encontré este videotutorial, que dura una hora y hace más o menos lo mismo:

Mi ejemplo más el video deberían aclarar bastante bien la película.