diff --git a/lib/transports/websocket.js b/lib/transports/websocket.js index 84db53119e..78a43043d5 100644 --- a/lib/transports/websocket.js +++ b/lib/transports/websocket.js @@ -25,9 +25,12 @@ exports = module.exports = WebSocket; */ function WebSocket (mng, data, req) { - var version = req.headers['sec-websocket-version']; + var transport + , version = req.headers['sec-websocket-version']; if (typeof version !== 'undefined' && typeof protocolVersions[version] !== 'undefined') { - return new protocolVersions[version](mng, data, req); + transport = new protocolVersions[version](mng, data, req); } - return new protocolVersions['default'](mng, data, req); + else transport = new protocolVersions['default'](mng, data, req); + if (typeof this.name !== 'undefined') transport.name = this.name; + return transport; }; diff --git a/lib/transports/websocket/hybi-07-12.js b/lib/transports/websocket/hybi-07-12.js index 8760a9e63e..c2a46f6a61 100644 --- a/lib/transports/websocket/hybi-07-12.js +++ b/lib/transports/websocket/hybi-07-12.js @@ -132,6 +132,20 @@ WebSocket.prototype.write = function (data) { } }; +/** + * Writes a payload. + * + * @api private + */ + +WebSocket.prototype.payload = function (msgs) { + for (var i = 0, l = msgs.length; i < l; i++) { + this.write(msgs[i]); + } + + return this; +}; + /** * Frame server-to-client output as a text packet. * diff --git a/test/common.js b/test/common.js index e658f72693..5ee75fa2b9 100644 --- a/test/common.js +++ b/test/common.js @@ -191,14 +191,14 @@ create = function (cl) { * @api private */ -function WSClient (port, sid) { +function WSClient (port, sid, transport) { this.sid = sid; this.port = port; - + this.transportName = transport || 'websocket'; WebSocket.call( this , 'ws://localhost:' + port + '/socket.io/' - + io.protocol + '/websocket/' + sid + + io.protocol + '/' + this.transportName + '/' + sid ); }; @@ -239,6 +239,6 @@ WSClient.prototype.packet = function (pack) { * @api public */ -websocket = function (cl, sid) { - return new WSClient(cl.port, sid); +websocket = function (cl, sid, transport) { + return new WSClient(cl.port, sid, transport); }; diff --git a/test/transports.flashsocket.test.js b/test/transports.flashsocket.test.js index 7ba79d3382..dc08b17ec8 100644 --- a/test/transports.flashsocket.test.js +++ b/test/transports.flashsocket.test.js @@ -163,6 +163,20 @@ module.exports = { io.flashPolicyServer.close(); done(); - } + }, + 'flashsocket identifies as flashsocket': function (done) { + var cl = client(++ports) + , io = create(cl) + , messages = 0 + , ws; + io.set('transports', ['flashsocket']); + io.sockets.on('connection', function (socket) { + socket.manager.transports[socket.id].name.should.equal('flashsocket'); + done(); + }); + cl.handshake(function (sid) { + ws = websocket(cl, sid, 'flashsocket'); + }); + } }; diff --git a/test/transports.websocket.test.js b/test/transports.websocket.test.js index 4b9ff6150f..f47e3b1750 100644 --- a/test/transports.websocket.test.js +++ b/test/transports.websocket.test.js @@ -19,6 +19,20 @@ var sio = require('socket.io') */ module.exports = { + 'websocket identifies as websocket': function (done) { + var cl = client(++ports) + , io = create(cl) + , messages = 0 + , ws; + io.set('transports', ['websocket']); + io.sockets.on('connection', function (socket) { + socket.manager.transports[socket.id].name.should.equal('websocket'); + done(); + }); + cl.handshake(function (sid) { + ws = websocket(cl, sid); + }); + }, 'test that not responding to a heartbeat drops client': function (done) { var cl = client(++ports)