Skip to content

Repository files navigation

Coderic Relay ⚡

Real-time messaging infrastructure

Coderic Relay es un gateway de comunicación en tiempo real con Socket.io, Redis y Kafka.

Instalación

npm install @coderic/relay

Uso Rápido

Como servidor standalone

# Con npx
npx @coderic/relay
# O con variables de entorno
PORT=5000 REDIS_URL=redis://localhost:6379 npx @coderic/relay

Como librería en tu proyecto

import{createRelay}from'@coderic/relay';constgateway=createRelay({port: 5000,redis: {url: 'redis://localhost:6379'},kafka: {brokers: ['localhost:9092']}});// Eventos personalizadosgateway.on('connection',(socket)=>{console.log('Nueva conexión:',socket.id);});gateway.on('message',({ socket, data })=>{console.log('Mensaje de',socket.data.usuario,':',data);});awaitgateway.start();

Cliente Node.js

import{RelayClient}from'@coderic/relay';constclient=newRelayClient('http://localhost:5000');awaitclient.connect();// Identificarseawaitclient.identificar('usuario123');// Enviar mensajesclient.enviar({texto: 'Hola mundo!'},'nosotros');// Escuchar mensajesclient.on('mensaje',(data)=>{console.log('Recibido:',data);});

Cliente navegador

<scriptsrc="https://cdn.socket.io/4.7.5/socket.io.min.js"></script><script>constsocket=io('http://localhost:5000/relay');socket.on('connect',()=>{socket.emit('identificar','miUsuario',(ok)=>{console.log('Identificado:',ok);});});// Enviar mensaje a todossocket.emit('relay',{texto: 'Hola!',destino: 'nosotros'});// Recibir mensajessocket.on('relay',(data)=>{console.log('Mensaje:',data);});</script>

API de Eventos

Eventos del cliente

EventoDescripciónPayload
identificarIdentificar usuario(userId, callback)
unirseUnirse a un room (v2.1)(room, callback)
notificarEnviar notificación{ ...data, destino }
relayCanal genérico{ ...data, destino }

Destinos

DestinoDescripción
yoSolo al emisor (default)
ustedesA todos menos el emisor
nosotrosA todos incluyendo el emisor
roomA todos en el room especificado (v2.1)

Ejemplo con Rooms

// Unirse a un roomsocket.emit('unirse','aulaA');// Enviar a ese roomsocket.emit('relay',{destino: 'room',room: 'aulaA',tipo: 'mensaje',texto: 'Hola aula A'});

Configuración

Variables de entorno

VariableDescripciónDefault
PORTPuerto del servidor5000
REDIS_URLURL de Redis-
KAFKA_BROKERSBrokers Kafka (comma-separated)-
INSTANCE_IDID de instanciaprocess.pid

Opciones del constructor

constgateway=createRelay({port: 5000,instanceId: 'gateway-1',namespace: '/relay',cors: {origin: '*',methods: ['GET','POST']},metrics: true,redis: {url: 'redis://localhost:6379',options: {/* ioredis options */}},kafka: {brokers: ['localhost:9092'],topic: 'relay-events',options: {/* kafkajs options */}},httpHandler: (req,res)=>{/* custom handler */}});

Eventos del servidor

gateway.on('ready',({ port })=>{});gateway.on('connection',(socket)=>{});gateway.on('disconnect',({ socket, reason })=>{});gateway.on('user:identified',({ usuario, socketId })=>{});gateway.on('message',({ socket, data })=>{});gateway.on('notify',({ socket, data })=>{});gateway.on('redis:connected',()=>{});gateway.on('redis:error',(error)=>{});gateway.on('kafka:connected',()=>{});gateway.on('kafka:error',(error)=>{});

Endpoints HTTP

EndpointDescripción
/healthHealth check (JSON)
/metricsMétricas Prometheus

Docker

docker pull coderic/relay
FROM coderic/relay:latest
ENV PORT=5000
ENV REDIS_URL=redis://redis:6379
ENV KAFKA_BROKERS=kafka:9092
EXPOSE 5000
CMD ["node", "src/server.js"]

Ejemplos

Básicos

💬 Chat - Colección Completa

4 ejemplos: Básico, Rooms, Video, Llamadas WebRTC

🍕 Pizza Delivery

Tracking de pedidos

🎫 Booking de Eventos

Reserva de eventos

Reservas y Booking

🚌 Bus Express

Reserva de autobuses (React)

✈️ SkyBooker

Reserva de vuelos (Angular)

🏨 Hotel Booking

Reserva de hoteles (Vue.js)

🎬 Cine

Reserva de asientos de cine (Svelte)

Otros Casos de Uso

💳 PasaPay

Pagos P2P estilo Nequi (Vue.js)

🔨 Subastas

Sistema de subastas en tiempo real (React)

🏦 Cola de Turnos

Sistema de cola tipo banco

Website

🌐 relay.coderic.net

Licencia

MIT © Coderic

About

Pasarela de comunicación simple con Node.js y socket.io

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages