Events Reference

November 26, 2025 ยท View on GitHub

Zeronode has 4 events:

import { Node, NodeEvent } from 'zeronode'

node.on(NodeEvent.PEER_JOINED, ({ peerId, direction, peerOptions }) => {})
node.on(NodeEvent.PEER_LEFT, ({ peerId, direction, reason }) => {})
node.on(NodeEvent.ERROR, ({ source, error }) => {})
node.on(NodeEvent.STOPPED, () => {})

PEER_JOINED

A peer connected.

node.on(NodeEvent.PEER_JOINED, ({ peerId, direction, peerOptions }) => {
  // direction: 'upstream' (we connected to them) or 'downstream' (they connected to us)
  // peerOptions: peer metadata
})

PEER_LEFT

A peer disconnected.

node.on(NodeEvent.PEER_LEFT, ({ peerId, direction, reason }) => {
  // reason: 'TIMEOUT', 'not_ready', 'server_left', etc.
  // Always handle this to clean up resources
})

ERROR

An error occurred.

node.on(NodeEvent.ERROR, ({ source, error }) => {
  console.error(`Error from ${source}:`, error.message)
})

node.on('error', (err) => {
  // Always add error handler to prevent crashes
})

STOPPED

Node stopped.

node.on(NodeEvent.STOPPED, () => {
  console.log('Stopped')
})

Example

import { Node, NodeEvent } from 'zeronode'

const node = new Node({ id: 'my-node', bind: 'tcp://0.0.0.0:5000' })

node.on(NodeEvent.PEER_JOINED, ({ peerId }) => console.log(`๐Ÿค ${peerId} joined`))
node.on(NodeEvent.PEER_LEFT, ({ peerId }) => console.log(`๐Ÿ‘‹ ${peerId} left`))
node.on(NodeEvent.ERROR, ({ error }) => console.error(`โŒ ${error.message}`))
node.on(NodeEvent.STOPPED, () => console.log('๐Ÿ›‘ Stopped'))

node.on('error', (err) => {
  if (err.code !== 'NO_NODES_MATCH_FILTER') console.error(err)
})

That's it! ๐ŸŽ‰