diff --git a/bws.js b/bws.js index 9260511..3080144 100755 --- a/bws.js +++ b/bws.js @@ -37,7 +37,7 @@ var start = function(cb) { if (err) return cb(err); var server = config.https ? serverModule.createServer(serverOpts, app) : serverModule.Server(app); - WsApp.start(server, config); + new WsApp().start(server, config); return server; }); }); @@ -47,7 +47,7 @@ var start = function(cb) { if (err) return cb(err); server = config.https ? serverModule.createServer(serverOpts, app) : serverModule.Server(app); - WsApp.start(server, config); + new WsApp().start(server, config); return cb(null, server); }); }; diff --git a/lib/wsapp.js b/lib/wsapp.js index 3f44471..9bc8ca8 100644 --- a/lib/wsapp.js +++ b/lib/wsapp.js @@ -9,44 +9,43 @@ var Uuid = require('uuid'); var WalletService = require('./server'); var MessageBroker = require('./messagebroker'); -var BlockchainMonitor = require('./blockchainmonitor'); log.level = 'debug'; -var io, messageBroker, blockchainMonitor; - var WsApp = function() {}; -WsApp._unauthorized = function(socket) { +WsApp.prototype._unauthorized = function(socket) { socket.emit('unauthorized'); socket.disconnect(); }; -WsApp._handleNotification = function(notification) { - io.to(notification.walletId).emit('notification', notification); +WsApp.prototype._handleNotification = function(notification) { + this.io.to(notification.walletId).emit('notification', notification); }; -WsApp.start = function(server, opts, cb) { +WsApp.prototype.start = function(server, opts, cb) { opts = opts || {}; $.checkState(opts.messageBrokerOpts); - io = require('socket.io')(server); + var self = this; + + this.io = require('socket.io')(server); async.series([ function(done) { - messageBroker = new MessageBroker(opts.messageBrokerOpts); - messageBroker.onMessage(WsApp._handleNotification); + self.messageBroker = new MessageBroker(opts.messageBrokerOpts); + self.messageBroker.onMessage(_.bind(self._handleNotification, self)); done(); }, function(done) { - io.on('connection', function(socket) { + self.io.on('connection', function(socket) { socket.nonce = Uuid.v4(); socket.on('authorize', function(data) { - if (data.message != socket.nonce) return WsApp._unauthorized(socket); + if (data.message != socket.nonce) return self._unauthorized(socket); WalletService.getInstanceWithAuth(data, function(err, service) { - if (err) return WsApp._unauthorized(socket); + if (err) return self._unauthorized(socket); socket.join(service.walletId); socket.emit('authorized');