Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@indutny
Created July 7, 2012 20:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save indutny/c673ba2eee983d4cd6a1 to your computer and use it in GitHub Desktop.
Save indutny/c673ba2eee983d4cd6a1 to your computer and use it in GitHub Desktop.
var cluster = require('cluster'),
https = require('https'),
fs = require('fs'),
Buffer = require('buffer').Buffer;
var redis = require('redis').createClient();
function start() {
var options = {
key: fs.readFileSync('./test/fixtures/test_key.pem'),
cert: fs.readFileSync('./test/fixtures/test_cert.pem')
};
var server = https.createServer(options, function (req, res) {
if (req.url === '/abc') process.exit();
res.end('hello');
});
server.listen(44300, function() {
console.log('listening!');
});
server.on('resumeTlsSession', function(key, callback) {
redis.get('tls_sessions:' + key.toString('base64'), function(err, sess) {
if (err || !sess) return callback(err, sess);
callback(null, new Buffer(sess, 'base64'));
});
});
server.on('newTlsSession', function(key, session) {
var rkey = 'tls_sessions:' + key.toString('base64');
redis.set(rkey, session.toString('base64'));
redis.expire(rkey, 300);
});
}
if (cluster.isMaster) {
for (var i = 0; i < 4; i++) {
cluster.fork();
}
cluster.on('exit', function(worker, code, signal) {
cluster.fork();
});
} else {
start();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment