dnode-tarantula

asynchronous rpc system for node.js, bi-direction and poly-direction communication...

dnode-tarantula

dnode-tarantula is an asynchronous rpc system for node.js based on dnode-protocol and TCP sockets. This is fork of dnode-spider

  • Automatic reconnection
  • bi-direction and poly-direction communication
npm install dnode-tarantula

server.js:

var dnode = require('dnode-tarantula');
 
/** create Spider-Server */
var server = new dnode.Spider({
    sfunction (abcb) {
        cb(+ b, 'Hello from Spider!');
    }
}, {port: 5000, host: 'localhost'});
 
/** on connection call client function "c" */
server.on('connection', function(remote) {
    remote.c(1, 2, function(reshello) {
        console.log(res, hello);
    });
});
 

client.js:

var dnode = require('dnode-tarantula');
 
/** create Fly-Client */
var client = new dnode.Fly({
    cfunction (abcb) {
        cb((+ b) * 2, 'Hello from Fly! My name: '+client.nodeId);
    }
}, {port: 5000, host: 'localhost', nodeId: 'Fly1'});
 
/** on connection call client function "s" */
client.on('connection', function(remote) {
    remote.s(1, 2, function(reshello) {
        console.log(res, hello);
    });
});
 

output:

node server.js &
node client.js &
3 'Hello from Spider!'
6 'Hello from Fly! My name: Fly1'
var dnode = require('dnode-tarantula')

Create new Spider-Server, shard api object functions to all connected Fly-s. If you don't like dnode.Spider classname, you can use dnode.Server. dnode.Server === dnode.Spider

  • Object api - shared Spider object
  • Object options - settings object {port: 5000(default), host: 'localhost'(default)}

After creation in api object add '$' object with 2 methods: 'proxy' and 'ids'. This methods availible in all Fly-s remote.

Call method with 'methodname' from Fly with id = 'nodeId'.

Return Array of all Id connected to Spider

Broad cast call 'methodname' on all Fly and pass to each arguments

Return ids of all connected clients

server.on('connection', function(remoteclient) {});   // client connected 
server.on('disconnection', function(client) {});        // client disconnected 

Create new Fly-Client, shard api object functions to Spider-Server. If you don't like dnode.Fly classname, you can use dnode.Client. dnode.Client === dnode.Fly

  • Object api - shared Fly object
  • Object options - settings object {port: 5000(default), host: 'localhost'(default), nodeId: 'any uniq_id or name'(default process.pid)}
server.on('connection', function(remote) {}); // client connected