holojam-node v0.2.3
holojam-node
Enables rapid, straightforward networking with the Holojam virtual reality platform
npm install holojam-nodeBare 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)