Socket.IO avanzado
(más allá del típico ejemplo del chat)
BA Node
17 de septiembre de 2015
Gabriel Montes
@gab_montes





Socket.IO
Motivación
- Comunicación web instantánea y bidireccional
- Contexto:
- 2009/2010
- Chrome 4, Firefox 3.5, IE 8
- JSONP, long polling, Flash sockets
- WebSockets
Características
- Componentes servidor y cliente
- Abstrae el canal de comunicación (transporte)
- Automatiza cierto manejo de errores
- Soporte para clientes JavaScript (browser y node)
- Soporte para clientes móviles (iOS, Android)
Características
- Transportes
- Inicia con XHR/JSONP, luego sube a WebSocket
- Reconexión automática
- Namespaces, rooms y broadcasting
- Integración con Express.js
API básica
// Servidor
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
// Cliente
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
http://socket.io/docs/
¡Demo!
Desafíos
- Separar clientes y generadores
- Namespaces (y rooms)
- Validar recepción de mensajes
- Confirmaciones (acknowledgements)
- Vincular sesión de Express.js con Socket.IO
- Middlewares y namespaces
Tareas para el hogar
- Autenticación y autorización (login)
- Persistencia y vinculación/gestión de sesiones
- Persistencia de encuestas y resultados
- Múltiples namespaces/rooms
- Encuestas simultáneas
- Clientes especializados que solo muestran resultados
- Escala (al infinito y más allá)
Más info
Nuestros auspiciantes


¡Muchas gracias!
Socket.IO avanzado
By Gabriel Montes
Socket.IO avanzado
- 2,390