Creá un chat con Socket-io, sin morir en el intento

La tecnología actual

Hoy en día, gestionás tus actividades por medio de e-mails, chats y mensajes instantáneos. Es evidente, que cada vez más, las empresas necesitan de sistemas que faciliten el feedback de clientes y usuarios internos; es por esto, que recomiendo la incorporación de sistemas de chat.

 

Ser o no ser : Crearlo o reutilizarlo

 

Esta es quizás la decisión en cuestión. Y depende mucho de cual sea el uso que se le va a dar y también el usuario al cual va orientado.

Hoy en día, en el mercado existen miles de chat prediseñados, muchos orientados a soporte. Simples widgets que se agregan al código del sitio web y te permite administrarlos sin mayor complejidad.
Sin embargo, la mayoría de estos chats son de pago y de alcance limitado, y/o no son extensibles mediante un desarrollo o administrador web.
Por otro lado, tenemos los chats con inteligencia artificial, que son desarrollados por empresas de gran escala, ya que involucra un gran número de recursos para su desarrollo.

Afortunadamente hay una luz al final del túnel. Si queremos generar un canal de chat con los usuarios de una forma específica y customizable, la mejor decisión es desarrollarlo nosotros mismos. Y desarrollarlo no significa reinventar la rueda sino más bien usar herramientas ya existentes que puedan hacer el desarrollo más ameno, y sobre todo confiable.

Socket-io: la herramienta estrella

Antes de comenzar a contar mi experiencia usando Socket-io debo primero decir que estas líneas van dedicadas a alguien que conoce de programación. Hacer un chat desde cero sin saber programación puede costarnos bastante tiempo , y es en realidad por el hecho mismo de aprender la lógica y los modos relacionados al programar. Programar se aprende programando, como andar en bici y conocer los chistes de una serie famosa de la televisión.

Socket-io es una librería de javascript que usada con un servidor Node.js permite, a partir de un par de líneas de código y algunas configuraciones, un chat en tiempo real de manera rápida y confiable.

Entender la lógica de comunicación

Para poder usar Socket-io es necesario primero conocer algo de la dinámica de comunicación a nivel red, es decir, la lógica de comunicación Cliente/ Servidor. Luego, necesitamos tener acceso a un servidor donde poder desarrollar (instalar, configurar softwares o servicios, etc). En este caso, por experiencia personal, recomiendo crear el servidor en Node.js y usando las librerías recomendadas en la documentación oficial. Existen otras formas de crear un servidor para Socket-io pero recomiendo la opción poder defecto.

Seguir la documentación

Otra de las recomendaciones que puedo dar es seguir la documentación a rajatabla, al menos si es la primera vez que usas Socket-io. Y esto es porque al principio puede ser que te cueste comprender la mecánica de los sockets (componentes de comunicación de red que utiliza la librería), las respuestas asincrónicas como así el uso de parámetros en las comunicaciones. Instalá todas las librerías recomendadas. Seguí y usá todos los ejemplos que provee la documentación para que puedas ir aprendiendo la lógica de la librería y sus usos. No omitas este paso si es la primera vez que lo usas, porque puede ser que la respuesta a una duda este en el siguiente ejemplo que no hiciste.

Antes de producción, probalo en desarrollo, y si hay entorno de test o staging, ¡mucho mejor!

Probá tu código, bien. Asegurate de que se realizan correctamente las comunicaciones, si llegan los mensajes y en caso de que uses alguna base de datos desde donde almacenar tus mensajes, comprobá que los mensajes se guarden correctamente.
Tener un entorno de test en estos casos es la mejor opción ya que a veces en el entorno de desarrollo funciona pero no en producción, por temas de seguridad, etc.
Muchas veces para crear un servidor de Socket-io en producción necesitaremos configurar certificados ssl para que la comunicación de sockets entre el servidor y los clientes sea segura.
Tener un servidor de staging es el lugar ideal para simular los casos de prueba que pueden suceder en el servidor final.
En caso de no tener staging, tendrás que lidiar quizás con algunos errores en producción y configurarlos en vivo.

Mi recomendación

Configurá el firewall y reglas de red para que el servidor sólo sea accedido por tus casos de prueba.