Merge pull request #120 from meteor/avital-websockets

Proxy websocket requests into inner web server
This commit is contained in:
Nick Martin
2012-05-01 16:17:48 -07:00

View File

@@ -96,6 +96,25 @@ var start_proxy = function (outer_port, inner_port, callback) {
}
});
// Proxy websocket requests using same buffering logic as for regular HTTP requests
p.on('upgrade', function(req, socket, head) {
if (Status.listening) {
// server is listening. things are hunky dory!
p.proxy.proxyWebSocketRequest(req, socket, head, {
host: '127.0.0.1', port: inner_port
});
} else {
// Not listening yet. Queue up request.
var buffer = httpProxy.buffer(req);
request_queue.push(function () {
p.proxy.proxyWebSocketRequest(req, socket, head, {
host: '127.0.0.1', port: inner_port,
buffer: buffer
});
});
}
});
p.on('error', function (err) {
if (err.code == 'EADDRINUSE') {
process.stderr.write("Can't listen on port " + outer_port