From b4b6f649411262745a95ac2e1ed3e4afcfbc68b9 Mon Sep 17 00:00:00 2001 From: Mike Thomas Date: Tue, 30 Aug 2011 10:46:37 -0700 Subject: [PATCH] Allowing clients to specify a sessionid when connecting. (bug 497) --- lib/manager.js | 9 +++++++-- test/manager.test.js | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/manager.js b/lib/manager.js index ee2bf49271..971aaea29b 100644 --- a/lib/manager.js +++ b/lib/manager.js @@ -796,8 +796,13 @@ Manager.prototype.handleHandshake = function (data, req, res) { if (err) return error(err); if (authorized) { - var id = self.generateId() - , hs = [ + var id = self.generateId(); + + if((typeof data.query !== 'undefined') && (typeof data.query.sessionid !== 'undefined')){ + id = data.query.sessionid; + } + + var hs = [ id , self.enabled('heartbeats') ? self.get('heartbeat timeout') || '' : '' , self.get('close timeout') || '' diff --git a/test/manager.test.js b/test/manager.test.js index 93922d38db..bed9cd9743 100644 --- a/test/manager.test.js +++ b/test/manager.test.js @@ -411,6 +411,21 @@ module.exports = { }); }, + 'test handshake with provided sessionid': function(done){ + var port = ++ports + , io = sio.listen(port) + , cl = client(port); + + cl.get('/socket.io/{protocol}/?sessionid=1234', function (res, data) { + res.statusCode.should.eql(200); + data.should.match(/1234:([0-9]+)?:([0-9]+)?:(.+)/); + + cl.end(); + io.server.close(); + done(); + }); + }, + 'test handshake with unsupported protocol version': function (done) { var port = ++ports , io = sio.listen(port)