43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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
 | |
| };
 | 
