httpolyglot
Version:
Serve http and https connections over the same port with node.js
46 lines (41 loc) • 1.21 kB
JavaScript
var fs = require('fs');
var http = require('http');
var https = require('https');
var assert = require('assert');
var common = require(__dirname + '/common');
var httpolyglot = require(__dirname + '/../lib/index');
var srv = httpolyglot.createServer({
key: fs.readFileSync(__dirname + '/fixtures/server.key'),
cert: fs.readFileSync(__dirname + '/fixtures/server.crt')
}, common.mustCall(function(req, res) {
this.count || (this.count = 0);
res.end(req.socket.encrypted ? 'https' : 'http');
if (++this.count === 2)
this.close();
}, 2));
srv.listen(0, '127.0.0.1', common.mustCall(function() {
var port = this.address().port;
http.get({
host: '127.0.0.1',
port: port
}, common.mustCall(function(res) {
var body = '';
res.on('data', function(data) {
body += data;
}).on('end', common.mustCall(function() {
assert.strictEqual(body, 'http');
}));
}));
https.get({
host: '127.0.0.1',
port: port,
rejectUnauthorized: false
}, common.mustCall(function(res) {
var body = '';
res.on('data', function(data) {
body += data;
}).on('end', common.mustCall(function() {
assert.strictEqual(body, 'https');
}));
}));
}));