ws-events-and-middlewares
Esta libreria esta concebida como un wrapper del modulo ws de node. Seguro que muchos de vosotros cuando usásteis la tecnología de websocket por primera vez lo hicísteis a traves de la maravillosa libreria de Socket.io
El problema de esta libreria es la integración con React Native y Socket.io-client (version portable del cliente de Socket.io) ya que Socket.io no ha dado soporte propio para React Native.
Cuando te planteas migrar todo el código hecho en Socket.io a la libreria ws 'nativa' te encuentras con el dilema de la gestión del eventos y la escasa versatilidad que te ofrece tener un único evento 'message' para comunicarte con tus cliente.
Veamos un ejemplo del uso de ws sin la libreria de este repositorio:
Construyendo un servidor websockets con ws
// Importamos la libreria de wsconst WebSocket = // Iniciamos un servidor websocket en el puerto 3000const wss = port: 3000 // Escuchamos el evento connection para detectar cuando se conecta un clientewss
Contruyendo la conexión desde el cliente
// Importamos la libreria de wsconst WebSocket = ; // Nos conectamos a nuestro servidor websocket en el puerto 3000const ws = 'ws://www.host.com:3000/path'; // Cuando la conexión este lista y abiertaws // Cuando recibamos un mensaje del servidorws
El problema que se nos presenta aquí en oposición a la libreria de Socket.io es que no tenemos forma de modificar el 'tipo' de mensaje que enviamos y estamos obligados a tomar medidas del tipo:
type: 'GET_CONNECTED_USERS' // Tipo de mensaje que enviamos payload: bar: 'foo'
Por otra parte tampoco tenemos gestión de callbacks y nos vemos obligado a esperar recibir un mensaje de respuesta. Como tampoco tenemos gestión para middleware.
Para solucionar estos problemas podemos implementar la libreria ligera de este repositorio:
Instalando ws-events-and-middlewares
npm install ws-events-and-middlewares --save
o
yarn install ws-events-and-middlewares --save