diff --git a/lib/server.js b/lib/server.js index 37f7c607..b7b41c53 100644 --- a/lib/server.js +++ b/lib/server.js @@ -160,16 +160,16 @@ } function addSockets(server) { - var listen, msg, + var socket, msg, config = main.config, status = 'off'; if (config.socket && Socket) { - listen = Socket.listen(server); + socket = Socket.listen(server); - if (listen) { + if (socket) { status = 'on'; - Console(); + Console(socket); Terminal(); } } diff --git a/lib/server/console.js b/lib/server/console.js index ad955812..11b8e878 100644 --- a/lib/server/console.js +++ b/lib/server/console.js @@ -19,8 +19,8 @@ CHANNEL = CloudFunc.CHANNEL_CONSOLE; - module.exports = function(onMsg) { - socket.on('connection', function(clientSocket) { + module.exports = function(io, onMsg) { + socket.on('connection', io, function(clientSocket) { onConnection(clientSocket, onMsg, function(error, json) { socket.emit(CHANNEL, json, clientSocket); }); @@ -67,12 +67,12 @@ log(conNum, 'console disconnected'); - socket.removeListener(CHANNEL, onMessage, clientSocket); - socket.removeListener('disconnect', onDisconnect, clientSocket); + socket.removeListener(CHANNEL, clientSocket, onMessage); + socket.removeListener('disconnect', clientSocket, onDisconnect); }.bind(null, ConNum); - socket.on(CHANNEL, onMessage, clientSocket); - socket.on('disconnect', onDisconnect, clientSocket); + socket.on(CHANNEL, clientSocket, onMessage); + socket.on('disconnect', clientSocket, onDisconnect); } else { msg = log(ConNum, ' in use. Reconnecting...\n'); diff --git a/lib/server/socket.js b/lib/server/socket.js index dc1d6ca0..8a1ce737 100644 --- a/lib/server/socket.js +++ b/lib/server/socket.js @@ -4,6 +4,9 @@ var DIR = '../', Util = require(DIR + 'util'), io = tryRequire('socket.io'), + + Socket, + AllListeners = []; exports.on = addListener; @@ -13,14 +16,21 @@ exports.emit = emit; exports.listen = listen; - function addListener(name, func, socket) { - if (!socket) - socket = io.sockets; + function addListener(name, socket, func) { + if (!func) { + func = socket; + socket = Socket; + } Util.addListener(name, func, AllListeners, socket); } - function removeListener(name, func, socket) { + function removeListener(name, socket, func) { + if (!func) { + func = socket; + socket = Socket; + } + Util.removeListener(name, func, AllListeners, socket); } @@ -47,10 +57,14 @@ * @server {Object} started server object */ function listen(server) { - if (io) - io = io.listen(server); + var result; - return io; + if (io) { + result = io.listen(server); + Socket = result.sockets; + } + + return Socket; } function tryRequire(name) { diff --git a/lib/server/terminal.js b/lib/server/terminal.js index cd700b86..74c58f30 100644 --- a/lib/server/terminal.js +++ b/lib/server/terminal.js @@ -18,7 +18,7 @@ ConNum = 0; - module.exports = function() { + module.exports = function(io) { var makePty = function(clientSocket) { onConnection(clientSocket, function(channel, data) { socket.emit(channel, data, clientSocket); @@ -26,7 +26,7 @@ }; if (pty) - socket.on('connection', makePty); + socket.on('connection', io, makePty); }; function onConnection(clientSocket, callback) { @@ -46,16 +46,16 @@ log(conNum, 'terminal disconnected'); - socket.removeListener(CHANNEL, dataFunc, clientSocket); - socket.removeListener(CHANNEL_RESIZE, resizeFunc, clientSocket); - socket.removeListener('disconnect', onDisconnect, clientSocket); + socket.removeListener(CHANNEL, clientSocket, dataFunc); + socket.removeListener(CHANNEL_RESIZE, clientSocket, resizeFunc); + socket.removeListener('disconnect', clientSocket, onDisconnect); term.destroy(); }.bind(null, ConNum, term); - socket.on(CHANNEL, dataFunc, clientSocket); - socket.on(CHANNEL_RESIZE, resizeFunc, clientSocket); - socket.on('disconnect', onDisconnect, clientSocket); + socket.on(CHANNEL, clientSocket, dataFunc); + socket.on(CHANNEL_RESIZE, clientSocket, resizeFunc); + socket.on('disconnect', clientSocket, onDisconnect); } else { log(ConNum, ' in use. Reconnecting...\n'); socket.disconnect();