UNPKG

storage-mule

Version:

The Realtime Framework Cloud Storage Mule utility

74 lines (60 loc) 2.33 kB
var ibtrealtimesjnode = require('ibtrealtimesjnode').IbtRealTimeSJNode; var offlineBuffer = require('./OrtcBuffer.js'); var ortcClient = null; var logger = null; function authenticate(ortcClient, opts){ var token = require('crypto').randomBytes(12).toString('hex'); var channels = {}; channels['chDebug'] = "w"; ortcClient.saveAuthentication( opts.ortcCluster, true, token, 0, opts.applicationKey, 1400, opts.privateKey, channels, function (err, success) { if(success){ if(opts.logger) opts.logger.info('[storage-mule] Using token: ' + token); ortcClient.connect(opts.applicationKey, token); } else { logger.error('[storage-mule] Save authentication failed' + (err ? ': '+err:'')); setTimeout(authenticate, 1000, ortcClient, opts); } } ); } module.exports = { init: function(opts){ if(opts.logger) logger = opts.logger; ortcClient = new ibtrealtimesjnode(); ortcClient.setConnectionMetadata('storage-mule'); ortcClient.setClusterUrl(opts.ortcCluster); ortcClient.onConnected = function (ortc) { logger && logger.info('[storage-mule] StorageMule connected to ORTC server: '+ ortc.getUrl()); offlineBuffer.process(); }; ortcClient.onException = function (ortc, exception) { logger && logger.error('[storage-mule] ORTC exception: ' + exception); if(exception === 'Invalid connection.' && opts.privateKey){ logger && logger.info('[storage-mule] Reauthenticate...'); authenticate(ortcClient, opts); } }; ortcClient.onReconnecting = function (ortc) { logger && logger.warn('[storage-mule] Reconnecting...'); }; ortcClient.onReconnected = function (ortc) { logger && logger.info('[storage-mule] Reconnected to: ' + ortc.getUrl()); offlineBuffer.process(); }; offlineBuffer.init(ortcClient); if(opts.privateKey){ authenticate(ortcClient, opts); } else { ortcClient.connect(opts.applicationKey, opts.authenticationToken); } }, send: function(data){ offlineBuffer.send(data); }, saveAuthentication: function(){ ortcClient.saveAuthentication.apply(this, arguments); } };