node package manager
Orgs are free. Discover, share, and reuse code in your team. Create a free org »

ws-events

ws-events

Minimal Events for WebSockets.

Example

ws-events decorates a WebSocket instance. It works both on the server and the client side.

On the server side:

const wsEvents = require('ws-events')
const Server = require('ws').Server
 
const wss = new Server()
wss.on('connection', (ws) => {
  const events = wsEvents(ws)
  events.emit('hello', {
    any: 'json'
  })
 
  events.on('world', (arg) => {
    console.log(arg)
  })
})

On the client side:

const wsEvents = require('ws-events')
const ws = wsEvents(new WebSocket('ws://localhost'))
 
ws.on('hello', (data) => {
  // data.any === 'json' 
  ws.emit('world', 'Hello from a browser \\o')
})

API

events = wsEvents(socket)

Create a ws-events emitter. The emitter wraps the passed-in socket, so all native WebSocket methods can still be used.

socket is a standard WebSocket instance.

const socket = wsEvents(new WebSocket(...))
socket.addEventListener('open', () => {
  // Using a ws-events method. 
  socket.emit('ya ya')
  // Using a native method. 
  socket.close()
})

events.on(eventName, cb): this

Register an event handler.

events.off(eventName, cb): this

Remove an event handler.

events.off(eventName): this

Remove all handlers for the given event.

events.off(): this

Remove all handlers for all events.

events.emit(eventName, ...arguments): this

Emit an event. When emitting on the server, the handlers on the client will fire. When emitting on the client, the handlers on the server will fire.

events.hasListeners(eventName): bool

Check if there are any handlers for an event.

events.listeners(eventName): Array<function>

Return the listeners for an event.

License

MIT.