1.1.1 • Published 6 years ago

ws-events-and-middlewares v1.1.1

Weekly downloads
6
License
MIT
Repository
github
Last release
6 years ago

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 ws
const WebSocket = require('ws')

// Iniciamos un servidor websocket en el puerto 3000
const wss = new WebSocket.Server({ port: 3000 })

// Escuchamos el evento connection para detectar cuando se conecta un cliente
wss.on('connection', function connection(ws) {

  // Escuchamos el evento message para detectar cuando nos envian un mensaje (no podemos cambiar el nombre del evento)
  ws.on('message', function (message) {
    console.log('Mensaje recibido: %s', message)
  })
 
  // Enviamos un mensaje de Ready para indicar al cliente que estamos listos para comunicarnos con el
  ws.send('ready')
})

Contruyendo la conexión desde el cliente

// Importamos la libreria de ws
const WebSocket = require('ws');
 
// Nos conectamos a nuestro servidor websocket en el puerto 3000
const ws = new WebSocket('ws://www.host.com:3000/path');

// Cuando la conexión este lista y abierta
ws.on('open', function open() {
  ws.send('Hola servidor!') // Enviamos un mensaje al servidor
})

// Cuando recibamos un mensaje del servidor
ws.on('message', function incoming(data) {
  console.log(data) // Imprimimos lo que el servidor nos este enviando
})

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

Construyendo el servidor con eventos

Construyendo el cliente

Construyendo el servidor con eventos y middlewares

Construyendo el servidor con eventos, middlewares y salas de broadcast

TODO list

1.1.1

6 years ago

1.0.25

6 years ago

1.0.24

7 years ago

1.0.23

7 years ago

1.0.22

7 years ago

1.0.21

7 years ago

1.0.20

7 years ago

1.0.19

7 years ago

1.0.18

7 years ago

1.0.17

7 years ago

1.0.16

7 years ago

1.0.15

7 years ago

1.0.14

7 years ago

1.0.13

7 years ago

1.0.12

7 years ago

1.0.11

7 years ago

1.0.10

7 years ago

1.0.9

7 years ago

1.0.8

7 years ago

1.0.7

7 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago