12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
-
- /**
- * Module dependencies.
- */
-
- var url = require('./url');
- var parser = require('socket.io-parser');
- var Manager = require('./manager');
- var debug = require('debug')('socket.io-client');
-
- /**
- * Module exports.
- */
-
- module.exports = exports = lookup;
-
- /**
- * Managers cache.
- */
-
- var cache = exports.managers = {};
-
- /**
- * Looks up an existing `Manager` for multiplexing.
- * If the user summons:
- *
- * `io('http://localhost/a');`
- * `io('http://localhost/b');`
- *
- * We reuse the existing instance based on same scheme/port/host,
- * and we initialize sockets for each namespace.
- *
- * @api public
- */
-
- function lookup (uri, opts) {
- if (typeof uri === 'object') {
- opts = uri;
- uri = undefined;
- }
-
- opts = opts || {};
-
- var parsed = url(uri);
- var source = parsed.source;
- var id = parsed.id;
- var path = parsed.path;
- var sameNamespace = cache[id] && path in cache[id].nsps;
- var newConnection = opts.forceNew || opts['force new connection'] ||
- false === opts.multiplex || sameNamespace;
-
- var io;
-
- if (newConnection) {
- debug('ignoring socket cache for %s', source);
- io = Manager(source, opts);
- } else {
- if (!cache[id]) {
- debug('new io instance for %s', source);
- cache[id] = Manager(source, opts);
- }
- io = cache[id];
- }
- if (parsed.query && !opts.query) {
- opts.query = parsed.query;
- }
- return io.socket(parsed.path, opts);
- }
-
- /**
- * Protocol version.
- *
- * @api public
- */
-
- exports.protocol = parser.protocol;
-
- /**
- * `connect`.
- *
- * @param {String} uri
- * @api public
- */
-
- exports.connect = lookup;
-
- /**
- * Expose constructors for standalone build.
- *
- * @api public
- */
-
- exports.Manager = require('./manager');
- exports.Socket = require('./socket');
|