web: option to enable/disable socket rpc handling

This commit is contained in:
Braydon Fuller 2016-04-15 10:44:56 -04:00
parent 69ff5423c2
commit 24ca5ce053
2 changed files with 39 additions and 3 deletions

View File

@ -1,15 +1,19 @@
'use strict';
var fs = require('fs');
var http = require('http');
var https = require('https');
var express = require('express');
var bodyParser = require('body-parser');
var socketio = require('socket.io');
var BaseService = require('../service');
var inherits = require('util').inherits;
var BaseService = require('../service');
var bitcore = require('bitcore-lib');
var _ = bitcore.deps._;
var index = require('../');
var log = index.log;
var fs = require('fs');
/**
* This service represents a hub for combining several services over a single HTTP port. Services
@ -32,6 +36,9 @@ var WebService = function(options) {
this.httpsOptions = options.httpsOptions || this.node.httpsOptions;
this.port = options.port || this.node.port || 3456;
this.enableSocketRPC = _.isUndefined(options.enableSocketRPC) ?
WebService.DEFAULT_SOCKET_RPC : options.enableSocketRPC;
this.node.on('ready', function() {
self.eventNames = self.getEventNames();
self.setupAllRoutes();
@ -43,6 +50,7 @@ var WebService = function(options) {
inherits(WebService, BaseService);
WebService.dependencies = [];
WebService.DEFAULT_SOCKET_RPC = true;
/**
* Called by Node to start the service
@ -157,7 +165,9 @@ WebService.prototype.getEventNames = function() {
WebService.prototype.socketHandler = function(socket) {
var bus = this.node.openBus();
socket.on('message', this.socketMessageHandler.bind(this));
if (this.enableSocketRPC) {
socket.on('message', this.socketMessageHandler.bind(this));
}
socket.on('subscribe', function(name, params) {
bus.subscribe(name, params);

View File

@ -36,6 +36,19 @@ var WebService = proxyquire('../../lib/services/web', {http: httpStub, https: ht
describe('WebService', function() {
var defaultNode = new EventEmitter();
describe('@constructor', function() {
it('will set socket rpc settings', function() {
var web = new WebService({node: defaultNode, enableSocketRPC: false});
web.enableSocketRPC.should.equal(false);
var web2 = new WebService({node: defaultNode, enableSocketRPC: true});
web2.enableSocketRPC.should.equal(true);
var web3 = new WebService({node: defaultNode});
web3.enableSocketRPC.should.equal(WebService.DEFAULT_SOCKET_RPC);
});
});
describe('#start', function() {
beforeEach(function() {
httpStub.createServer.reset();
@ -236,6 +249,19 @@ describe('WebService', function() {
socket.emit('message', 'data');
});
it('on message should NOT call socketMessageHandler if not enabled', function(done) {
web = new WebService({node: node, enableSocketRPC: false});
web.eventNames = web.getEventNames();
web.socketMessageHandler = sinon.stub();
socket = new EventEmitter();
web.socketHandler(socket);
socket.on('message', function() {
web.socketMessageHandler.callCount.should.equal(0);
done();
});
socket.emit('message', 'data');
});
it('on subscribe should call bus.subscribe', function(done) {
bus.subscribe = function(param1) {
param1.should.equal('data');