All Projects → wolfeidau → mqtt-rpc

wolfeidau / mqtt-rpc

Licence: MIT license
This module provides an RPC over MQTT.

Programming Languages

javascript
184084 projects - #8 most used programming language

mqtt-rpc Build Status

This module provides an rpc interface for an mqtt connection, in essence this is a request and response strategy which uses an MQTT topic structure as transport.

NPM NPM

Installation

npm install mqtt-rpc

server

Exposes an array of functions which retrieves and returns data.

var mqtt = require('mqtt')
  , mqttrpc = require('mqtt-rpc')
  , debug = require('debug')('remote-time:server');

var settings = {
  reconnectPeriod: 5000 // chill on the reconnects
}

// client connection
var mqttclient = mqtt.connect('mqtt://localhost', settings);

// build a mqtt new RPC server
var server = mqttrpc.server(mqttclient);

// optionally configure the codec, which defaults to JSON, also supports msgpack
server.format('json');

// provide a new method
server.provide('$RPC/time', 'localtime', function (args, cb) {
  debug('localtime');
  cb(null, new Date());
});

client

Consumes the api exposed by the previous example.

var mqtt = require('mqtt')
  , mqttrpc = require('mqtt-rpc')
  , debug = require('debug')('remote-time:client');

var settings = {
  reconnectPeriod: 5000 // chill on the reconnects
}

// client connection
var mqttclient = mqtt.connect('mqtt://localhost', settings);

// build a new RPC client
var client = mqttrpc.client(mqttclient);

// optionally configure the codec, which defaults to JSON, also supports msgpack
client.format('json');

// call the remote method
client.callRemote('$RPC/time', 'localtime', {}, function(err, data){
  debug('callRemote', err, data);
});

License

Copyright (c) 2013 Mark Wolfe Licensed under the MIT license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].