New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

uhura

Package Overview
Dependencies
Maintainers
3
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

uhura - npm Package Compare versions

Comparing version 0.0.2 to 0.0.3

lib/uhura.js

52

index.js

@@ -1,49 +0,3 @@

var Client = require('./lib/client')
, Server = require('./lib/server')
, Session = require('./lib/session');
/**
* This is lowercase to mirror how connect.session works
*
* var RedisStore = require('connect-redis')(Uhura);
* var server = Uhura.createServer({
* store: new RedisStore(options)
* }, function (socket) {
* // Session-aware socket/emitter
* });
*/
exports.session = Session;
/**
* Create uhura client
*
* @param {mixed} [port] [Port, as number or string, to use in net.connect]
* @param {string} [host] [Optional host name to use in net.connect]
* @return {net.Socket} [Client emitter]
*/
exports.Client = Client;
exports.createClient = function (port, host) {
var client = new Client;
client.connect(port, host);
return client;
};
/**
* Create uhura server
*
* @param {object} [options] [Optional session store options]
* @param {function} [cb] [Function to handle each connection]
* @return {net.Socket} [TCP server to use, not yet listening]
*/
exports.Server = Server;
exports.createServer = function (options, cb) {
if (typeof options === 'function') {
cb = options;
options = {};
}
var server = new Server(options);
return server.start(cb);
};
module.exports = process.env.UHURA_COV
? require('./lib-cov/uhura')
: require('./lib/uhura');

@@ -69,3 +69,3 @@ var SendEmitter = require('./send_emitter')

this._reconnect = false;
this.socket.end();
this.socket.destroy();
};

@@ -72,0 +72,0 @@

@@ -25,2 +25,10 @@ var SendEmitter = require('./send_emitter')

socket.once('close', this.disconnect.bind(this));
// Save session whenever it changes
this.on('_set', function () {
ev.session.resetMaxAge();
ev.session.save(function (err) {
if (err) console.error(err.stack);
});
});
}

@@ -54,3 +62,6 @@ util.inherits(Connection, SendEmitter);

this.sessionStore.get(id, function (err, session) {
if (err || ! session) { return ev.start(); }
if (err || ! session) {
delete ev.session.sessionID;
return ev.start();
}
ev.sessionStore.createSession(ev, session);

@@ -69,12 +80,4 @@ ev.syncSession();

Connection.prototype.disconnect = function () {
var ev = this;
this.emit('disconnect');
if (this.ready) {
this.ready = false;
this.session.resetMaxAge();
this.session.save(function (err) {
if (err) console.error(err.stack);
ev.socket.end();
});
}
this.ready && (this.ready = false);
};
{
"name": "uhura",
"version": "0.0.2",
"version": "0.0.3",
"description": "server-to-server event emitter wire protocol",

@@ -18,4 +18,5 @@ "main": "index.js",

"scripts": {
"test": "mocha -r should -G -R spec"
"test": "mocha -r should -G -R spec",
"coverage": "rm -rf lib-cov && jscoverage lib lib-cov && UHURA_COV=1 mocha -r should -G -R html-cov > lib-cov/index.html && open lib-cov/index.html"
}
}

@@ -6,42 +6,45 @@ var Uhura = require('../');

t-- && t == 0 && fn();
}
};
}
var socket = './test/socket';
describe('reconnection', function () {
this.timeout(5000);
// Kill server and client after each test
var c, server;
afterEach(function (next) {
c.disconnect();
server.close(next);
});
it('should reconnect when autoReconnect is enabled', function (next) {
var server = Uhura.createServer(function (s) {
setTimeout(function () {
s.disconnect();
}, 100)
})
server.listen(3333);
server = Uhura.createServer(function (s) {
setTimeout(function () {
s.socket.destroy();
}, 100);
});
server.listen(socket);
var c = Uhura.createClient(3333);
c = Uhura.createClient(socket);
c.autoReconnect();
c.on('connect', after(2, function () {
server.close(next);
c.disconnect();
}));
c.on('connect', after(2, next));
});
it('should continue receiving events after reconnection', function (next) {
var done = after(2, function () {
server.close(next);
c.disconnect();
});
var done = after(2, next);
var server = Uhura.createServer(function (s) {
server = Uhura.createServer(function (s) {
s.on('ping', function () {
s.disconnect();
done();
s.socket.destroy();
});
});
server.listen(4444);
server.listen(socket);
var c = Uhura.createClient(4444);
c.autoReconnect();
c.on('connect', function () {
c = Uhura.createClient(socket);
c.autoReconnect();
c.on('connect', function () {
c.send('ping');

@@ -55,13 +58,12 @@ });

var done = after(3, function () {
for (var i = 0; i < sent.length; i++) {
sent[i].should.equal(received[i]);
}
server.close(next);
c.disconnect();
})
for (var i = 0; i < sent.length; i++) {
sent[i].should.equal(received[i]);
}
next();
});
var server = Uhura.createServer(function (s) {
server = Uhura.createServer(function (s) {
// Disconnect after 250ms
setTimeout(function () {
s.disconnect();
s.socket.destroy();
done();

@@ -74,6 +76,6 @@ }, 250);

});
})
server.listen(5555);
});
server.listen(socket);
var c = Uhura.createClient(5555);
c = Uhura.createClient(socket);

@@ -87,7 +89,7 @@ // Send messages repeatedly

c.on('connect', after(3, function () {
clearInterval(timer);
c.on('connect', after(3, function () {
clearInterval(timer);
}));
c.autoReconnect();
c.autoReconnect();
});
});

@@ -9,3 +9,3 @@ var Uhura = require('../');

var port = 12345;
var socket = './test/socket';

@@ -15,11 +15,18 @@ describe('session', function () {

// Kill server and client after each test
var c, server;
afterEach(function (next) {
c.disconnect();
server.close(next);
});
it('should keep session', function (next) {
var server = Uhura.createServer(function (s) {
server = Uhura.createServer(function (s) {
setTimeout(function () {
s.disconnect();
s.socket.destroy();
}, 100);
});
server.listen(port);
server.listen(socket);
var c = Uhura.createClient(port);
c = Uhura.createClient(socket);
c.autoReconnect();

@@ -36,4 +43,3 @@

}
c.disconnect();
server.close(next);
next();
}));

@@ -43,37 +49,33 @@ });

it('should send changes to client', function (next) {
var server = Uhura.createServer(function (s) {
server.close(function () {
c.get('foo').should.equal('bar');
next();
});
server = Uhura.createServer(function (s) {
c.once('_set', function () {
s.disconnect();
s.socket.destroy();
setTimeout(function () {
c.get('foo').should.equal('bar');
next()
}, 100);
});
s.set('foo', 'bar');
});
server.listen(port);
server.listen(socket);
var c = Uhura.createClient(port);
c = Uhura.createClient(socket);
});
it('should send changes to server', function (next) {
var server = Uhura.createServer(function (s) {
server = Uhura.createServer(function (s) {
s.on('_set', function () {
process.nextTick(function () {
s.get('foo').should.equal('bar');
s.disconnect();
});
s.get('foo').should.equal('bar');
s.socket.destroy();
});
});
server.listen(port);
server.listen(socket);
var c = Uhura.createClient(port);
c = Uhura.createClient(socket);
c.on('connect', function () {
c.set('foo', 'bar');
});
c.on('disconnect', function () {
server.close(next);
});
c.on('disconnect', next);
});
});

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc