var _global = (function() { return this; })(); var NativeWebSocket = _global.WebSocket || _global.MozWebSocket; var websocket_version = require('./version'); /** * Expose a W3C WebSocket class with just one or two arguments. */ function W3CWebSocket(uri, protocols) { var native_instance; if (protocols) { native_instance = new NativeWebSocket(uri, protocols); } else { native_instance = new NativeWebSocket(uri); } /** * 'native_instance' is an instance of nativeWebSocket (the browser's WebSocket * class). Since it is an Object it will be returned as it is when creating an * instance of W3CWebSocket via 'new W3CWebSocket()'. * * ECMAScript 5: http://bclary.com/2004/11/07/#a-13.2.2 */ return native_instance; } if (NativeWebSocket) { ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'].forEach(function(prop) { Object.defineProperty(W3CWebSocket, prop, { get: function() { return NativeWebSocket[prop]; } }); }); } /** * Module exports. */ module.exports = { 'w3cwebsocket' : NativeWebSocket ? W3CWebSocket : null, 'version' : websocket_version };