diff --git a/lib/socket.js b/lib/socket.js index a12b8f57..03fb9c7d 100644 --- a/lib/socket.js +++ b/lib/socket.js @@ -73,6 +73,16 @@ Socket.prototype.__defineGetter__('handshake', function () { return this.manager.handshaken[this.id]; }); +/** + * Accessor shortcut for the transport type + * + * @api private + */ + +Socket.prototype.__defineGetter__('transport', function () { + return this.manager.transports[this.id].name; +}); + /** * Accessor shortcut for the logger. * diff --git a/test/transports.websocket.test.js b/test/transports.websocket.test.js index 7293a670..bb885277 100644 --- a/test/transports.websocket.test.js +++ b/test/transports.websocket.test.js @@ -1642,5 +1642,36 @@ module.exports = { } }); }); + }, + + 'accessing the transport type': function (done) { + var cl = client(++ports) + , io = create(cl) + , ws; + + io.sockets.on('connection', function (socket) { + socket.transport.should.equal('websocket'); + + socket.on('disconnect', function () { + setTimeout(function () { + ws.finishClose(); + cl.end(); + io.server.close(); + done(); + }, 10); + }); + + socket.disconnect(); + }); + + cl.handshake(function (sid) { + ws = websocket(cl, sid); + ws.on('message', function (msg) { + if (!ws.connected) { + msg.type.should.eql('connect'); + ws.connected = true; + } + }); + }); } };