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 únicocallback(function): Recibetruesi fue exitoso
El userId puede ser cualquier cosa:
nickname→ Chatsfirebase.uid→ Apps móvilesdeviceId→ IoTsessionId→ Web appsorderId→ 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
| Destino | Descripción |
|---|---|
yo | Solo el emisor recibe el mensaje (default) |
ustedes | Todos excepto el emisor |
nosotros | Todos 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
| Endpoint | Método | Descripción |
|---|---|---|
/ | GET | Página de inicio |
/health | GET | Health check (JSON) |
/metrics | GET | Mé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();