dnode-spider
Version:
asynchronous rpc system for node.js, bi-direction and poly-direction communication...
131 lines (89 loc) • 3.1 kB
Markdown
# dnode-spider
dnode-spider is an asynchronous rpc system for node.js based on dnode-protocol and TCP sockets.
Fly-Clients nodes and Spider-Server in the middle of web.
Fly === Client.
Spider === Server.

### Features
* Automatic reconnection
* bi-direction and poly-direction communication provided by Spider-Server 'proxy' method. You can call any Fly-Clients functions from any Fly-Clients.
### Install
```
npm i dnode-spider
```
### Examples
server.js:
``` js
var dnode = require('dnode-spider');
/** create Spider-Server */
var server = new dnode.Spider({
s: function (a, b, cb) {
cb(a + b, 'Hello from Spider!');
}
}, {port: 5000, host: 'localhost'});
/** on connection call client function "c" */
server.on('connection', function(remote) {
remote.c(1, 2, function(res, hello) {
console.log(res, hello);
});
});
```
client.js:
``` js
var dnode = require('dnode-spider');
/** create Fly-Client */
var client = new dnode.Fly({
c: function (a, b, cb) {
cb((a + 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(res, hello) {
console.log(res, hello);
});
});
```
output:
```
node server.js &
node client.js &
3 'Hello from Spider!'
6 'Hello from Fly! My name: Fly1'
```
## Methods
``` js
var dnode = require('dnode-spider')
```
## Server Methods
### var server = dnode.Spider(Object api, Object options = {});
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.
### api.$.proxy(String nodeId, String methodname, [arguments...])
Call method with 'methodname' from Fly with id = 'nodeId'.
### api.$.ids(Function callback)
Return Array of all Id connected to Spider
### server.broadcast(String methodname, [arguments...])
Broad cast call 'methodname' on all Fly and pass to each arguments
### server.ids()
Return ids of all connected clients
### Events
``` js
server.on('connection', function(remote, client) {}); // client connected
server.on('disconnection', function(client) {}); // client disconnected
```
## Client Methods
### var client = dnode.Fly(Object api, Object options = {});
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)}
### Events
``` js
server.on('connection', function(remote) {}); // client connected
```