|
|
|
|
|
|
|
|
|
|
|
var url = require('./url'); |
|
var parser = require('socket.io-parser'); |
|
var Manager = require('./manager'); |
|
var debug = require('debug')('socket.io-client'); |
|
|
|
|
|
|
|
|
|
|
|
module.exports = exports = lookup; |
|
|
|
|
|
|
|
|
|
|
|
var cache = exports.managers = {}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exports.protocol = parser.protocol; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exports.connect = lookup; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exports.Manager = require('./manager'); |
|
exports.Socket = require('./socket'); |
|
|