12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import { url } from "./url.js";
- import { Manager } from "./manager.js";
- import { Socket } from "./socket.js";
- import debugModule from "debug"; // debug()
- const debug = debugModule("socket.io-client"); // debug()
- /**
- * Managers cache.
- */
- const cache = {};
- function lookup(uri, opts) {
- if (typeof uri === "object") {
- opts = uri;
- uri = undefined;
- }
- opts = opts || {};
- const parsed = url(uri, opts.path || "/socket.io");
- const source = parsed.source;
- const id = parsed.id;
- const path = parsed.path;
- const sameNamespace = cache[id] && path in cache[id]["nsps"];
- const newConnection = opts.forceNew ||
- opts["force new connection"] ||
- false === opts.multiplex ||
- sameNamespace;
- let io;
- if (newConnection) {
- debug("ignoring socket cache for %s", source);
- io = new Manager(source, opts);
- }
- else {
- if (!cache[id]) {
- debug("new io instance for %s", source);
- cache[id] = new Manager(source, opts);
- }
- io = cache[id];
- }
- if (parsed.query && !opts.query) {
- opts.query = parsed.queryKey;
- }
- return io.socket(parsed.path, opts);
- }
- // so that "lookup" can be used both as a function (e.g. `io(...)`) and as a
- // namespace (e.g. `io.connect(...)`), for backward compatibility
- Object.assign(lookup, {
- Manager,
- Socket,
- io: lookup,
- connect: lookup,
- });
- /**
- * Protocol version.
- *
- * @public
- */
- export { protocol } from "socket.io-parser";
- /**
- * Expose constructors for standalone build.
- *
- * @public
- */
- export { Manager, Socket, lookup as io, lookup as connect, lookup as default, };
|