diff --git a/lib/browser.js b/lib/browser.js index a2979e38..af5550b8 100644 --- a/lib/browser.js +++ b/lib/browser.js @@ -1,16 +1,32 @@ var _global = (function() { return this; })(); +var nativeWebSocket = _global.WebSocket || _global.MozWebSocket; /** - * W3CWebSocket constructor. + * Expose a W3C WebSocket class with just one or two arguments. */ -var W3CWebSocket = _global.WebSocket || _global.MozWebSocket; +function W3CWebSocket(uri, protocols) { + var instance; + + if (protocols) { + instance = new nativeWebSocket(uri, protocols); + } + else { + instance = new nativeWebSocket(uri); + } + + return instance; +} + +if (nativeWebSocket) { + W3CWebSocket.prototype = nativeWebSocket.prototype; +} /** * Module exports. */ module.exports = { - 'w3cwebsocket' : W3CWebSocket ? W3CWebSocket : null, + 'w3cwebsocket' : nativeWebSocket ? W3CWebSocket : null, 'version' : require('./version') }; diff --git a/test/shared/test-server.js b/test/shared/test-server.js index a82ef50e..78a9cae0 100644 --- a/test/shared/test-server.js +++ b/test/shared/test-server.js @@ -10,7 +10,7 @@ function prepare(callback) { response.writeHead(404); response.end(); }); - + wsServer = new WebSocketServer({ httpServer: server, autoAcceptConnections: false, @@ -20,7 +20,7 @@ function prepare(callback) { keepalive: false, disableNagleAlgorithm: false }); - + server.listen(64321, function(err) { if (err) { return callback(err); @@ -35,7 +35,7 @@ function stopServer() { server.close(); } catch(e) { - console.warn("stopServer threw", e); + console.warn('stopServer threw', e); } }