Browse Source

refactor websockets app

activeAddress
Ivan Socolsky 10 years ago
parent
commit
bfaf7ff5c4
  1. 4
      bws.js
  2. 25
      lib/wsapp.js

4
bws.js

@ -37,7 +37,7 @@ var start = function(cb) {
if (err) return cb(err); if (err) return cb(err);
var server = config.https ? serverModule.createServer(serverOpts, app) : var server = config.https ? serverModule.createServer(serverOpts, app) :
serverModule.Server(app); serverModule.Server(app);
WsApp.start(server, config); new WsApp().start(server, config);
return server; return server;
}); });
}); });
@ -47,7 +47,7 @@ var start = function(cb) {
if (err) return cb(err); if (err) return cb(err);
server = config.https ? serverModule.createServer(serverOpts, app) : server = config.https ? serverModule.createServer(serverOpts, app) :
serverModule.Server(app); serverModule.Server(app);
WsApp.start(server, config); new WsApp().start(server, config);
return cb(null, server); return cb(null, server);
}); });
}; };

25
lib/wsapp.js

@ -9,44 +9,43 @@ var Uuid = require('uuid');
var WalletService = require('./server'); var WalletService = require('./server');
var MessageBroker = require('./messagebroker'); var MessageBroker = require('./messagebroker');
var BlockchainMonitor = require('./blockchainmonitor');
log.level = 'debug'; log.level = 'debug';
var io, messageBroker, blockchainMonitor;
var WsApp = function() {}; var WsApp = function() {};
WsApp._unauthorized = function(socket) { WsApp.prototype._unauthorized = function(socket) {
socket.emit('unauthorized'); socket.emit('unauthorized');
socket.disconnect(); socket.disconnect();
}; };
WsApp._handleNotification = function(notification) { WsApp.prototype._handleNotification = function(notification) {
io.to(notification.walletId).emit('notification', notification); this.io.to(notification.walletId).emit('notification', notification);
}; };
WsApp.start = function(server, opts, cb) { WsApp.prototype.start = function(server, opts, cb) {
opts = opts || {}; opts = opts || {};
$.checkState(opts.messageBrokerOpts); $.checkState(opts.messageBrokerOpts);
io = require('socket.io')(server); var self = this;
this.io = require('socket.io')(server);
async.series([ async.series([
function(done) { function(done) {
messageBroker = new MessageBroker(opts.messageBrokerOpts); self.messageBroker = new MessageBroker(opts.messageBrokerOpts);
messageBroker.onMessage(WsApp._handleNotification); self.messageBroker.onMessage(_.bind(self._handleNotification, self));
done(); done();
}, },
function(done) { function(done) {
io.on('connection', function(socket) { self.io.on('connection', function(socket) {
socket.nonce = Uuid.v4(); socket.nonce = Uuid.v4();
socket.on('authorize', function(data) { 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) { WalletService.getInstanceWithAuth(data, function(err, service) {
if (err) return WsApp._unauthorized(socket); if (err) return self._unauthorized(socket);
socket.join(service.walletId); socket.join(service.walletId);
socket.emit('authorized'); socket.emit('authorized');

Loading…
Cancel
Save