mirror of
https://github.com/bitinflow/server.git
synced 2026-03-17 15:35:56 +00:00
fix websocket support
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
require('stackup');
|
||||||
var log = require('bookrc');
|
var log = require('bookrc');
|
||||||
var localenv = require('localenv');
|
var localenv = require('localenv');
|
||||||
var optimist = require('optimist');
|
var optimist = require('optimist');
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
/// bookrc logging setup
|
/// bookrc logging setup
|
||||||
var log = require('book').default();
|
var log = require('book').default();
|
||||||
require('stackup');
|
|
||||||
|
|
||||||
log.use(require('book-git')(__dirname));
|
log.use(require('book-git')(__dirname));
|
||||||
log.use(require('book-raven')(process.env.SENTRY_DSN));
|
log.use(require('book-raven')(process.env.SENTRY_DSN));
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
docker run --restart always --name localtunnel -d --net host defunctzombie/localtunnel-server:0.0.5 bin/server --secure --port 2000
|
docker run --restart always --name localtunnel -d --net host defunctzombie/localtunnel-server:0.0.5 bin/server --secure --port 2000 --max-sockets 5
|
||||||
|
|
||||||
docker run --restart always --name nginx -d --net host -v /home/core/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/core/nginx/sites:/etc/nginx/sites -v /home/core/nginx/ssl:/etc/nginx/ssl nginx:1.7.8
|
docker run --restart always --name nginx -d --net host -v /home/core/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/core/nginx/sites:/etc/nginx/sites -v /home/core/nginx/ssl:/etc/nginx/ssl nginx:1.7.8
|
||||||
|
|||||||
27
package.json
27
package.json
@@ -9,25 +9,26 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"book": "1.3.1",
|
"book": "1.3.1",
|
||||||
"optimist": "0.6.1",
|
|
||||||
"debug": "2.1.0",
|
|
||||||
"bookrc": "0.0.1",
|
|
||||||
"book-git": "0.0.2",
|
"book-git": "0.0.2",
|
||||||
"book-raven": "1.0.1",
|
"book-raven": "1.0.1",
|
||||||
"browserkthx": "0.0.2",
|
"bookrc": "0.0.1",
|
||||||
"hbs": "2.7.0",
|
|
||||||
"taters": "1.0.0",
|
|
||||||
"express": "4.10.5",
|
|
||||||
"makeup": "0.0.1",
|
|
||||||
"enchilada": "0.11.0",
|
|
||||||
"bouncy": "3.2.2",
|
"bouncy": "3.2.2",
|
||||||
|
"browserkthx": "0.0.2",
|
||||||
|
"debug": "2.1.0",
|
||||||
|
"enchilada": "0.11.0",
|
||||||
|
"express": "4.10.5",
|
||||||
|
"hbs": "2.7.0",
|
||||||
|
"localenv": "0.2.2",
|
||||||
|
"makeover": "0.0.1",
|
||||||
|
"makeup": "0.0.1",
|
||||||
|
"on-finished": "2.2.0",
|
||||||
|
"optimist": "0.6.1",
|
||||||
|
"serve-favicon": "2.1.7",
|
||||||
"stackup": "0.0.5",
|
"stackup": "0.0.5",
|
||||||
"stylish": "0.5.0",
|
"stylish": "0.5.0",
|
||||||
"makeover": "0.0.1",
|
"taters": "1.0.0",
|
||||||
"tldjs": "1.5.1",
|
"tldjs": "1.5.1",
|
||||||
"on-finished": "2.2.0",
|
"ws": "0.6.5"
|
||||||
"localenv": "0.2.2",
|
|
||||||
"serve-favicon": "2.1.7"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "2.0.1",
|
"mocha": "2.0.1",
|
||||||
|
|||||||
@@ -53,6 +53,10 @@ function maybe_bounce(req, res, bounce) {
|
|||||||
// we can't respond to these requests
|
// we can't respond to these requests
|
||||||
var finished = false;
|
var finished = false;
|
||||||
on_finished(res, function(err) {
|
on_finished(res, function(err) {
|
||||||
|
if (req.headers['upgrade'] == 'websocket') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
finished = true;
|
finished = true;
|
||||||
req.connection.destroy();
|
req.connection.destroy();
|
||||||
});
|
});
|
||||||
|
|||||||
63
test/websocket.js
Normal file
63
test/websocket.js
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
var http = require('http');
|
||||||
|
var url = require('url');
|
||||||
|
var assert = require('assert');
|
||||||
|
var localtunnel = require('localtunnel');
|
||||||
|
var WebSocket = require('ws');
|
||||||
|
var WebSocketServer = require('ws').Server;
|
||||||
|
|
||||||
|
var localtunnel_server = require('../server')();
|
||||||
|
|
||||||
|
var lt_server_port
|
||||||
|
|
||||||
|
test('setup localtunnel server', function(done) {
|
||||||
|
var server = localtunnel_server.listen(function() {
|
||||||
|
lt_server_port = server.address().port;
|
||||||
|
console.log('lt server on:', lt_server_port);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('setup local websocket server', function(done) {
|
||||||
|
|
||||||
|
var wss = new WebSocketServer({ port: 0 }, function() {
|
||||||
|
test._fake_port = wss._server.address().port;
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
|
||||||
|
wss.on('connection', function connection(ws) {
|
||||||
|
ws.on('message', function incoming(message) {
|
||||||
|
ws.send(message);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('setup localtunnel client', function(done) {
|
||||||
|
var opt = {
|
||||||
|
host: 'http://localhost:' + lt_server_port,
|
||||||
|
};
|
||||||
|
|
||||||
|
localtunnel(test._fake_port, opt, function(err, tunnel) {
|
||||||
|
assert.ifError(err);
|
||||||
|
var url = tunnel.url;
|
||||||
|
assert.ok(new RegExp('^http:\/\/.*localhost:' + lt_server_port + '$').test(url));
|
||||||
|
test._fake_url = url;
|
||||||
|
done(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('test websocket server request', function(done) {
|
||||||
|
var hostname = url.parse(test._fake_url).hostname;
|
||||||
|
var ws = new WebSocket('http://localhost:' + lt_server_port, {
|
||||||
|
headers: {
|
||||||
|
host: hostname + '.tld'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ws.on('message', function(msg) {
|
||||||
|
assert.equal(msg, 'something');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
|
||||||
|
ws.on('open', function open() {
|
||||||
|
ws.send('something');
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user