aboutsummaryrefslogtreecommitdiffhomepage
path: root/node_modules/socket.io-client/lib/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/socket.io-client/lib/index.js')
-rw-r--r--node_modules/socket.io-client/lib/index.js94
1 files changed, 94 insertions, 0 deletions
diff --git a/node_modules/socket.io-client/lib/index.js b/node_modules/socket.io-client/lib/index.js
new file mode 100644
index 0000000..6bc993c
--- /dev/null
+++ b/node_modules/socket.io-client/lib/index.js
@@ -0,0 +1,94 @@
+
+/**
+ * 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');