plediii / dual-ephemeral

Ephemeral nodes for dualapi

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

dual-ephemeral Build Status

Extend dualapi domains with ephemeral nodes.

var dual = require('dual-protocol').use(require('dual-ephemeral'));

Domains with this extension can add ephemeral hosts:

var domain = dual();
domain.ephemeral(['e']);

After registering a client,

  domain.send(['e', 'register', 'client', xxxx]);

the client may be added to ephemeral groups:

   domain.send(['e', 'enter', 'client', xxxx], ['group', yyyy], { some: 'data' });

Ephemeral groups broadcast enter and exit events.

  domain.mount(['group', yyyy, 'enter'], function (body, ctxt) {
    console.log('New group member in ', yyyy, ':', ctxt.options.nodeRoute);
    console.log('Payload: ', body);
  });

  domain.mount(['group', yyyy, 'exit'], function (body, ctxt) {
    console.log('Group member in ', yyyy, ' exited:', ctxt.options.nodeRoute);
    console.log('Payload: ', body);
  });

The client may exit manually, or disconnect:

   domain.send(['e', 'exit', 'client', xxxx], ['group', yyyy]);
   domain.send(['disconnect', 'client', xxxx]);

Whichever happens first, ephemeral controller will emit an exit event with the original enter payload.

About

Ephemeral nodes for dualapi


Languages

Language:JavaScript 100.0%