UNPKG

ripple-rest-dinex

Version:

A RESTful API for submitting payments and monitoring accounts on the Ripple network.

72 lines (59 loc) 1.63 kB
'use strict'; var ripple = require('ripple-lib'); function noop() { return; } var defaultLogger = { debug: noop, info: noop, warn: noop, error: noop }; function createRemote(options) { var remote = new ripple.Remote(options); if (options.mock) { return remote; } var logger = options.logger || defaultLogger; var connect = remote.connect; var connected = false; function ready() { if (!connected) { logger.info('[RIPD] Connection established'); connected = true; } } remote.connect = function() { logger.info('[RIPD] Attempting to connect to the Ripple network...'); connect.apply(remote, arguments); }; remote.on('error', function(err) { logger.error('[RIPD] error: ', err); }); remote.on('disconnect', function() { logger.info('[RIPD] Disconnected from the Ripple network'); connected = false; }); remote._servers.forEach(function(server) { server.on('connect', function() { logger.info('[RIPD] Connected to rippled server:', server.getServerID()); server.once('ledger_closed', ready); }); server.on('disconnect', function() { logger.info('[RIPD] Disconnected from rippled server:', server.getServerID()); }); }); process.on('SIGHUP', function() { logger.info('Received signal SIGHUP, reconnecting to Ripple network'); remote.reconnect(); }); setInterval(function() { var pingRequest = remote.request('ping'); pingRequest.on('error', function() {}); pingRequest.broadcast(); }, 1000 * 15); remote.connect(); return remote; } module.exports = createRemote;