Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Simple Remote Objects for Node.js, Work in Progress
JavaScript
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
test
.gitignore
LICENSE
README.md
package.json

README.md

SimpleRemote

Simple Remote Object implementation. It wraps up a Javascript object to use it from other process.

Installation

Via npm on Node:

npm install simpleremote

Usage

Reference it from your program:

var simpleremote = require('simpleremote');

Declare and expose an object using a server:

var obj = {
    add: function(x,y) { 
        return x + y;
    }
};

var server = simpleremote.createRemoteServer(obj);
server.listen(port);

Consuming the remote object from a client:

var client = simpleremote.createRemoteClient();
client.on('remote', function (remote) { // receives an proxy object to remote object
    remote.add(1, 2, function (err, value) {
       console.log(value); // prints 3
    };
});
client.connect(port, host);

Declare and expose an object using a client:

var obj = {
    add: function(x,y) { 
        return x + y;
    }
};

var client = simpleremote.createRemoteClient(obj);
client.connect(port, host);

Consuming the remote object from a server:

var server = simpleremote.createRemoteServer();
server.on('remote', function (remote) { // receives an proxy object to remote object at client connection
    remote.add(1, 2, function (err, value) {
       console.log(value); // prints 3
    };
});
server.listen(port);

You can combine both methods.

If the remote method to invoke has a callback as last parameter, you must declare its name at exposing the object:

var obj = {
    addAsync: function(x,y, cb) { 
        // ...
        cb(null, x + y);
    }
};

var client = simpleremote.createRemoteClient(obj, ['addAsync']);
var obj = {
    addAsync: function(x,y, cb) { 
        // ...
        cb(null, x + y);
    }
};

var server = simpleremote.createRemoteServer(obj, ['addAsync']);

TBD: Registry support.

Development

git clone git://github.com/ajlopez/SimpleRemote.git
cd SimpleRemote
npm install
npm test

Versions

  • 0.0.1: Published
  • 0.0.2: Published. Refactored to use SimpleMessages 0.0.3
  • 0.0.3: Published. Adding support for call remote async methods (methods that accept a callback function as end argument). Updated README.md
  • 0.0.4: Published. Using SimpleMessages 0.0.5; updated engine range
  • 0.0.5: Published. Using SimpleMessages 0.0.6; silent error in server if error in client socket

Used by

  • SimpleQueue Simple in-memory Queue for Node.js. It can be used from remote clients.

Contribution

Feel free to file issues and submit pull requests — contributions are welcome.

If you submit a pull request, please be sure to add or update corresponding test cases, and ensure that npm test continues to pass.

Something went wrong with that request. Please try again.