0.2.3 • Published 7 years ago

holojam-node v0.2.3

Weekly downloads
1
License
BSD-3-Clause
Repository
github
Last release
7 years ago

holojam-node

Enables rapid, straightforward networking with the Holojam virtual reality platform

npm install holojam-node

Bare Minimum:

To set up a working server in one line, just do

const holojam = require('holojam-node')(['relay']);

Create partial servers with 'emitter' (send-only) or 'sink' (receive-only). Pass in 'web' to enable web support (socket.io, JSON).

Usage:

var flakes = [{
  label: 'my-flake-0',
  ...
},{
  label: 'my-flake-1',
  ...
}]

holojam.Send(holojam.BuildUpdate('my-app', flakes));

holojam.on('update', (flakes, scope, origin) => {
  console.log(flakes);
});

var flake = {
  label: 'my-event',
  ...
}

holojam.Send(holojam.BuildEvent('my-app', flake));

holojam.on('my-event', (flake, scope, origin) => {
  console.log(flake);
});

Advanced:

Additional functions:

SendRaw(buffer), SendToWeb(nugget), Encode(nugget), Decode(buffer), BuildNotification(scope, label)

Additional (node) event:

'update-raw', (buffer, info), 'tick', (packetsSent, packetsReceived, bytesSent, bytesReceived, packetSize, events)

As shown above, Holojam events and notifications are converted to node events for ease of use.

Build packets to send (in Holojam-ese) with BuildUpdate(scope, flakes), BuildEvent(scope, flake), and BuildNotification(scope, label). Flakes are passed in as js objects and follow the Holojam format. The scope is a string, similar to a namespace.

Read metrics with the 'tick' event, which fires every second: packets sent, packets received, bytes sent, bytes received (all per second), average packet size (bytes), events per second.

Full constructor with defaults:

const holojam = require('holojam-node')(['relay', 'web'], '0.0.0.0', 9593, 9592, 9591, '239.0.2.4');

(Mode, server address, web port, upstream port, downstream port, multicast address)