Saltar al contenido principal

API de Eventos

Conexión

Usando Socket.io directamente

const socket = io('http://localhost:5000/pasarela');

Usando el conector helper

const pasarela = new PasarelaConector('http://localhost:5000');
await pasarela.conectar();

Eventos Cliente → Servidor

identificar

Asocia un identificador al socket actual.

socket.emit('identificar', userId, (ok) => {
console.log(ok ? 'Identificado' : 'Error');
});

Parámetros:

  • userId (string): Cualquier identificador único
  • callback (function): Recibe true si fue exitoso

El userId puede ser cualquier cosa:

  • nickname → Chats
  • firebase.uid → Apps móviles
  • deviceId → IoT
  • sessionId → Web apps
  • orderId → Sistemas de pedidos

notificar

Envía una notificación.

socket.emit('notificar', {
destino: 'nosotros',
titulo: 'Alerta',
mensaje: 'Contenido de la notificación',
// ... cualquier dato adicional
});

pasarela

Canal genérico para cualquier tipo de mensaje.

socket.emit('pasarela', {
destino: 'nosotros',
tipo: 'mi_tipo_de_evento',
// ... cualquier dato adicional
});

Destinos

DestinoDescripción
yoSolo el emisor recibe el mensaje (default)
ustedesTodos excepto el emisor
nosotrosTodos incluyendo el emisor

Eventos Servidor → Cliente

notificar

socket.on('notificar', (data) => {
console.log(data.titulo, data.mensaje);
});

pasarela

socket.on('pasarela', (data) => {
switch(data.tipo) {
case 'chat_message':
// manejar mensaje de chat
break;
case 'order_update':
// manejar actualización de pedido
break;
}
});

Endpoints HTTP

EndpointMétodoDescripción
/GETPágina de inicio
/healthGETHealth check (JSON)
/metricsGETMétricas Prometheus

Respuesta de /health

{
"status": "ok",
"instance": "1",
"connections": 42
}

Conector Helper

El archivo conector.js proporciona una interfaz más amigable:

const pasarela = new PasarelaConector('http://localhost:5000');

// Eventos
pasarela.on('connect', () => {});
pasarela.on('disconnect', () => {});
pasarela.on('pasarela', (data) => {});
pasarela.on('notificar', (data) => {});

// Métodos
await pasarela.conectar();
await pasarela.identificar(userId);

pasarela.enviar(data); // destino en data
pasarela.enviarAMi(data); // destino: yo
pasarela.enviarAOtros(data); // destino: ustedes
pasarela.enviarATodos(data); // destino: nosotros

pasarela.notificar(data);
pasarela.desconectar();