Skip to content

Adoptaunpeludo/websocket-service

Repository files navigation

Servidor de WebSockets adoptaunpeludo.com

NOTA:

Este servicio es dependiente de la API de adoptaunpeludo.com.

Descripción

Servidor de WebSockets encargado de gestionar las notificaciones en tiempo real y el chat incluido en la Web, se conecta a un broker de mensajes RabbitMQ donde recibe mensajes desde el exhange 'notification-request' y que consumirá estos mensajes en las siguientes colas:

  • animal-changed-push-notification: -- Cola encargada de mandar notificaciones cuando un animal de los favoritos del usuario ha sufrido un cambio o ha sido borrado.

  • new-chat-push-notification: -- Cola encargada de mandar una notificacion a un usuario cuando se crea un nuevo chat del cual es integrante.

  • animal-changed-notification: -- Cola encargada de mandar una notificacion a todos los usuarios cuando un usuario crea/borra/actualiza un animal para actualizar la informacion de los animales en tiempo real.

  • user-changed-notification: -- Cola encargada de mandar una notificacion a todos los usuarios cuando un usuario crea/borra/actualiza su cuenta para acutalizar la información mostrada en la web en tiempo real.

A su vez el servidor mandará mensajes a dos exchanges:

  • email-request -- A la cola 'email-request' para solicitar el envio de un email cuando al intentar enviar una notificación a un usuario cuando éste se encuentra offline

  • error-notification -- A la cola 'error-logs' para que el servicio NOC se encargue de guardar y notificar a los administradores del error segun su 'level'

Funcionalidad:

El servidor de websockets es el encargado de enviar notificaciones en tiempo real acerca de cambios que afecten a animales o usuarios y también de:

  • Login: Autentificar al usuario que hace la peticion al servidor de Websockets

  • Logout: Desconectar al usuario previamente autentificado del servidor de Websockets

  • Crear sala de chat: Crear una sala de chat privada cuando así lo solicite un usuario autentificado

  • Entrar a sala de chat: Entrar a una sala de chat previamente creada, marcar todos los mensajes del chat como leidos

  • Salir de sala de chat: Salir de una sala de chat donde se encontraba el usuario

  • Mensaje de chat: Enviar un mensaje a el otro usuario (si lo hubiera) dentro de la sala de chat, si el otro usuario no estuviera en la sala le llegaría una notificacion de 'new-chat-message' y el mensaje se marcaría como leido y si estuviera offline le llegaría un email con un link a la sala de chat donde se escribió el mensaje y el mensaje se marcaría como no leido

Instalación

Consultar la documentación de la API para arrancar este servicio junto a todos los otros usando Docker.

  1. Clonar el repo, movernos al directorio e instalar las depencencias:
git clone https://github.com/Adoptaunpeludo/websocket-service
cd websocket-service
npm i
  1. Copiar o renombrar el archivo .env.template y configurar con datos propios
PORT=<puerto del servicio>

# Postrgresql DB
DATABASE_URL=postgresql:<url a la base de datos para desarrollo local>
DOCK_DATABASE_URL=<url a la base de datos en produccion lanzada con Docker>

# JWT
JWT_SEED=<seed para los tokens JWT>

# RabbitMQ
RABBITMQ_USER=<usuario de rabbitmq>
RABBITMQ_PASS=<password de rabbitmq>
DOCK_RABBITMQ_URL=amqp:<url de rabbitmq estando en el mismo docker-compose>
RABBITMQ_URL=<url para conectar a rabbitmq>

3-a. Arrancar la aplicación en modo desarrollo

npm run dev

3-b. Arrancar la aplicación en modo produccion

npm run build
npm run start:prod

NOTA: Para que este servicio funcione de forma autónoma necesita una base de datos postgresql con las tablas necesarias para que funcione la API y RabbitMQ configurados con los valores del archivo .env

About

WebSocket Notifications Service

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published