6 var url = require('./url');
7 var parser = require('socket.io-parser');
8 var Manager = require('./manager');
9 var debug = require('debug')('socket.io-client');
15 module.exports = exports = lookup;
21 var cache = exports.managers = {};
24 * Looks up an existing `Manager` for multiplexing.
25 * If the user summons:
27 * `io('http://localhost/a');`
28 * `io('http://localhost/b');`
30 * We reuse the existing instance based on same scheme/port/host,
31 * and we initialize sockets for each namespace.
36 function lookup (uri, opts) {
37 if (typeof uri === 'object') {
44 var parsed = url(uri);
45 var source = parsed.source;
47 var path = parsed.path;
48 var sameNamespace = cache[id] && path in cache[id].nsps;
49 var newConnection = opts.forceNew || opts['force new connection'] ||
50 false === opts.multiplex || sameNamespace;
55 debug('ignoring socket cache for %s', source);
56 io = Manager(source, opts);
59 debug('new io instance for %s', source);
60 cache[id] = Manager(source, opts);
64 if (parsed.query && !opts.query) {
65 opts.query = parsed.query;
67 return io.socket(parsed.path, opts);
76 exports.protocol = parser.protocol;
85 exports.connect = lookup;
88 * Expose constructors for standalone build.
93 exports.Manager = require('./manager');
94 exports.Socket = require('./socket');