node-mate

1.0.3 • Public • Published

node-mate

npm version Join the chat at https://gitter.im/Covertness/node-mate

node-mate is a library for the MATE protocol, written in JavaScript for node.js.

Features

Distributed

QoS

Easy-to-use

Installation

npm install node-mate

Quick start

Starting the first mate node.

var mate = require('node-mate');
 
var node = mate.createNode();
 
node.on('listening', function() {
    console.log('mate node ' + node.localNodeContact.id.toString() + ' started');
});
 
node.on('message', function(from, message) {
    console.log('receive ' + from.id.toString() + ' message: ' + message);
});

Starting another to connect the first node and send a message.

var mate = require('node-mate');
 
var node = mate.createNode({
    networkPort: 2016,
    rootNode: {
        ip: '127.0.0.1',
        port: 2015
    }
});
 
node.on('listening', function() {
    console.log('mate node ' + node.localNodeContact.id.toString() + ' started');
});
 
node.on('root_connected', function(root) {
    console.log('root node connected');
 
    node.send(root.id.toString(), 'I\'m here!', function(success) {
        if (success === true) {
            console.log('send message success');
        } else {
            console.log('send message failed');
        }
    });
});

You can run these code online!

API

  • mate.createNode()
  • mate.Node#send()
  • mate.Node#end()

mate.createNode([options])

Create a mate node by the given options and returns the node.

  • options is the mate node options, including:
    • networkPort: Port of the mate node listening, default 2015
    • rootNode: Address of the first connecting node when the node started, it's a object like: {ip: '127.0.0.1', port: 2015}
    • nodeId: the node id, default is a random string generated by uuid
    • nodeInfoFile: the file that stored the node id, for reuse

mate.Node#send(nodeId, message, [callback])

Send a message.

  • nodeId: the node id to send to, String
  • message: the message to send to, String, Buffer or Object
  • callback: fired on sended

mate.Node#end()

Shut down the node.

Event

  • 'listening'
  • 'root_connected'
  • 'message'
  • 'root_disconnect'
  • 'net_error'
  • 'data_error'
  • 'net_close'

'listening'

function() {}

Emitted on successful listening on the node port

'root_connected'

function(rootNode) {}

Emitted when connected to the root node

  • rootNode: Information of the root node, including id, address and so on, Object

'message'

function(fromNode, message) {}

Emitted when receive a message

  • fromNode: Information of the node that send message, including id, address and so on, Object
  • message: message of recevied, String, Buffer or Object

'root_disconnect'

function(rootNode) {}

Emitted after lost the connection with the root node

  • rootNode: Information of the root node, including id, address and so on, Object

'net_error'

function(error) {}

Emitted when the node cannot listening.

'data_error'

function(error) {}

Emitted when a parsing error occurs.

'net_close'

Emitted when the node shut down.

Code contributions

By contributing code to the project in any form, including sending a pull request via Github, a code fragment or patch via email.

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i node-mate

Weekly Downloads

1

Version

1.0.3

License

MIT

Last publish

Collaborators

  • covertness