Instalación
Instalación con npm
npm install @coderic/relay
Uso Rápido
Como servidor standalone
# Con npx (recomendado para pruebas)
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';
const gateway = createRelay({
port: 5000,
redis: { url: 'redis://localhost:6379' },
kafka: { brokers: ['localhost:9092'] }
});
await gateway.start();
Docker
Imagen oficial
docker pull coderic/relay
Dockerfile de ejemplo
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"]
Docker Compose
version: '3.8'
services:
relay:
image: coderic/relay:latest
ports:
- "5000:5000"
environment:
- PORT=5000
- REDIS_URL=redis://redis:6379
- KAFKA_BROKERS=kafka:9092
# Opcional: Desactivar plugin WebRTC
# - WEBRTC_ENABLED=false
# Opcional: Configurar servidores STUN
# - STUN_SERVERS=stun:stun.l.google.com:19302,stun:stun1.l.google.com:19302
# Opcional: Configurar servidor TURN
# - TURN_URL=turn:turn.tudominio.com:3478
# - TURN_USERNAME=usuario
# - TURN_CREDENTIAL=password
depends_on:
- redis
- kafka
Configuración
Variables de entorno
| Variable | Descripción | Default |
|---|---|---|
PORT | Puerto del servidor | 5000 |
REDIS_URL | URL de Redis | - |
WEBRTC_ENABLED | Habilitar plugin WebRTC | true |
STUN_SERVERS | Servidores STUN (separados por comas o JSON array) | Servidores de Google por defecto |
TURN_URL | URL del servidor TURN (opcional) | - |
TURN_USERNAME | Usuario para TURN (opcional) | - |
TURN_CREDENTIAL | Credencial para TURN (opcional) | - |
KAFKA_BROKERS | Brokers Kafka (comma-separated) | - |
INSTANCE_ID | ID de instancia | process.pid |
MONGODB_URL | URL de MongoDB (opcional) | - |
Opciones del constructor
const gateway = 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 */ }
});
Verificación
Una vez iniciado, verifica que el servidor está funcionando:
# Health check
curl http://localhost:5000/health
# Métricas Prometheus
curl http://localhost:5000/metrics