Socket.IO avanzado

(más allá del típico ejemplo del chat)

BA Node

17 de septiembre de 2015

Gabriel Montes

@gab_montes

Text

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!

Gabriel Montes

 @gab_montes

 gabmontes

Copy of Socket.IO avanzado

By Pablo Bianchi

Copy of Socket.IO avanzado

  • 491