|
/**
* socket.io
* Copyright(c) 2011 LearnBoost <dev@learnboost.com>
* MIT Licensed
*/
(function (exports, global) {
/**
* IO namespace.
*
* @namespace
*/
var io = exports;
/**
* Socket.IO version
*
* @api public
*/
io.version = '0.9.11';
/**
* Protocol implemented.
*
* @api public
*/
io.protocol = 1;
/**
* Available transports, these will be populated with the available transports
*
* @api public
*/
io.transports = [];
/**
* Keep track of jsonp callbacks.
*
* @api private
*/
io.j = [];
/**
* Keep track of our io.Sockets
*
* @api private
*/
io.sockets = {};
// if node
/**
* Expose constructors if in Node
*/
if ('object' === typeof module && 'function' === typeof require) {
/**
* Expose utils
*
* @api private
*/
io.util = require('./util').util;
/**
* Expose JSON.
*
* @api private
*/
io.JSON = require('./json').JSON;
/**
* Expose parser.
*
* @api private
*/
io.parser = require('./parser').parser;
/**
* Expose EventEmitter
*
* @api private
*/
io.EventEmitter = require('./events').EventEmitter;
/**
* Expose SocketNamespace
*
* @api private
*/
io.SocketNamespace = require('./namespace').SocketNamespace;
/**
* Expose Transport
*
* @api public
*/
io.Transport = require('./transport').Transport;
/**
* Default enabled transports
*
* @api public
*/
io.transports = ['websocket', 'xhr-polling'];
/**
* Expose all transports
*
* @api public
*/
io.Transport.XHR = require('./transports/xhr').XHR;
io.transports.forEach(function (t) {
io.Transport[t] = require('./transports/' + t)[t];
});
/**
* Expose Socket
*
* @api public
*/
io.Socket = require('./socket').Socket;
/**
* Location of `dist/` directory.
*
* @api private
*/
io.dist = __dirname + '/../dist';
/**
* Expose our build system which can generate
* socket.io files on the fly with different transports
*
* @api private
*/
io.builder = require('../bin/builder');
}
// end node
/**
* Manages connections to hosts.
*
* @param {String} uri
* @Param {Boolean} force creation of new socket (defaults to false)
* @api public
*/
io.connect = function (host, details) {
var uri = io.util.parseUri(host)
, uuri
, socket;
if (global && global.location) {
uri.protocol = uri.protocol || global.location.protocol.slice(0, -1);
uri.host = uri.host || (global.document
? global.document.domain : global.location.hostname);
uri.port = uri.port || global.location.port;
}
uuri = io.util.uniqueUri(uri);
var options = {
host: uri.host
, secure: 'https' == uri.protocol
, port: uri.port || ('https' == uri.protocol ? 443 : 80)
, query: uri.query || ''
};
io.util.merge(options, details);
if (options['force new connection'] || !io.sockets[uuri]) {
socket = new io.Socket(options);
}
if (!options['force new connection'] && socket) {
io.sockets[uuri] = socket;
}
socket = socket || io.sockets[uuri];
// if path is different from '' or /
return socket.of(uri.path.length > 1 ? uri.path : '');
};
})('object' === typeof module ? module.exports : (this.io = {}), this);
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I currently hold the following qualifications (amongst others, I also studied Music Technology and Electronics, for my sins)
- MSc (Passed with distinctions), in Information Technology for E-Commerce
- BSc Hons (1st class) in Computer Science & Artificial Intelligence
Both of these at Sussex University UK.
Award(s)
I am lucky enough to have won a few awards for Zany Crazy code articles over the years
- Microsoft C# MVP 2016
- Codeproject MVP 2016
- Microsoft C# MVP 2015
- Codeproject MVP 2015
- Microsoft C# MVP 2014
- Codeproject MVP 2014
- Microsoft C# MVP 2013
- Codeproject MVP 2013
- Microsoft C# MVP 2012
- Codeproject MVP 2012
- Microsoft C# MVP 2011
- Codeproject MVP 2011
- Microsoft C# MVP 2010
- Codeproject MVP 2010
- Microsoft C# MVP 2009
- Codeproject MVP 2009
- Microsoft C# MVP 2008
- Codeproject MVP 2008
- And numerous codeproject awards which you can see over at my blog