diff --git a/ChangeLog b/ChangeLog index 47c2e2c6..f22d3a8d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -88,6 +88,8 @@ getJSONfromFileTable. * feature(socket) add minification and gzip +* feature(socket) if id in use - reconnect + 2012.04.22, v0.2.0 diff --git a/lib/server/socket.js b/lib/server/socket.js index 0e59da1f..da3b4d79 100644 --- a/lib/server/socket.js +++ b/lib/server/socket.js @@ -38,7 +38,7 @@ * @pServer {Object} started server object */ exports.listen = function(pServer){ - var lRet, lListen, lConnNum, lConn_func; + var lRet, lListen, lConnNum, lMsg, lConn_func; if(io){ lListen = io.listen(pServer), @@ -50,17 +50,21 @@ lRet = lListen.sockets.on('connection', function (socket){ ++lConnNum; - socket.send('{"stdout":"client connected"}'); - log(lConnNum, 'connected'); - - if(!OnMessageFuncs[lConnNum]) - OnMessageFuncs[lConnNum] = onMessage(lConnNum, socket); - - lConn_func = OnMessageFuncs[lConnNum]; - - socket.on('message', lConn_func); - socket.on('disconnect', Util.call(disconnect, lConnNum)); + if(!OnMessageFuncs[lConnNum]) { + lMsg = log(lConnNum, 'connected'); + socket.send('{"stdout":"' + lMsg + '"}'); + + OnMessageFuncs[lConnNum] = onMessage(lConnNum, socket); + lConn_func = OnMessageFuncs[lConnNum]; + + socket.on('message', lConn_func); + socket.on('disconnect', Util.call(disconnect, lConnNum)); + } else { + lMsg = log(lConnNum, ' in use. Reconnecting...'); + socket.send('{"stdout":"' + lMsg + '"}'); + socket.disconnect(); + } }); } @@ -165,14 +169,18 @@ } function log(pConnNum, pStr, pType){ - var lType = ' '; + var lRet, lType = ' '; if (pStr) { if (pType) lType += pType + ':'; - Util.log('#' + pConnNum + lType + pStr); + lRet = 'client #' + pConnNum + lType + pStr; + + Util.log(lRet); } + + return lRet; } })();