diff --git a/src/routes/apps.js b/src/routes/apps.js index 06ddb231c..c4669e2b9 100644 --- a/src/routes/apps.js +++ b/src/routes/apps.js @@ -464,7 +464,7 @@ function exec(req, res, next) { function execWebSocket(ws, req, next) { assert.strictEqual(typeof req.params.id, 'string'); - debug('Execing into app id:%s and cmd:%s', req.params.id, req.query.cmd); + debug('Execing websocket into app id:%s and cmd:%s', req.params.id, req.query.cmd); var cmd = null; if (req.query.cmd) { @@ -480,8 +480,6 @@ function execWebSocket(ws, req, next) { var tty = req.query.tty === 'true' ? true : false; - // req.clearTimeout(); - apps.exec(req.params.id, { cmd: cmd, rows: rows, columns: columns, tty: tty }, function (error, duplexStream) { if (error && error.reason === AppsError.NOT_FOUND) return next(new HttpError(404, 'No such app')); if (error && error.reason === AppsError.BAD_STATE) return next(new HttpError(409, error.message)); diff --git a/src/server.js b/src/server.js index 3b5c20f15..aa47c4dec 100644 --- a/src/server.js +++ b/src/server.js @@ -238,22 +238,25 @@ function initializeExpressSync() { // upgrade handler httpServer.on('upgrade', function (req, socket, head) { - // upgraded connections should never time out - req.clearTimeout(); + if (req.headers.upgrade === 'websocket') { + // websocket connections should never time out + req.clearTimeout(); + } else { + // create a node response object for express + var res = new http.ServerResponse({}); + res.assignSocket(socket); + res.sendUpgradeHandshake = function () { // could extend express.response as well + console.log('----- now send the upgrade handshake') + socket.write('HTTP/1.1 101 TCP Handshake\r\n' + + 'Upgrade: tcp\r\n' + + 'Connection: Upgrade\r\n' + + '\r\n'); + }; - // create a node response object for express - // var res = new http.ServerResponse({}); - // res.assignSocket(socket); - // res.sendUpgradeHandshake = function () { // could extend express.response as well - // socket.write('HTTP/1.1 101 TCP Handshake\r\n' + - // 'Upgrade: tcp\r\n' + - // 'Connection: Upgrade\r\n' + - // '\r\n'); - // }; - - // // route through express middleware. if we provide no callback, express will provide a 'finalhandler' - // // TODO: it's not clear if socket needs to be destroyed - // app(req, res); + // route through express middleware. if we provide no callback, express will provide a 'finalhandler' + // TODO: it's not clear if socket needs to be destroyed + app(req, res); + } }); return httpServer;