You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.4 KiB
58 lines
1.4 KiB
2 years ago
|
import { url } from "./url.js";
|
||
|
import { Manager } from "./manager.js";
|
||
|
import { Socket } from "./socket.js";
|
||
|
/**
|
||
|
* 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) {
|
||
|
io = new Manager(source, opts);
|
||
|
}
|
||
|
else {
|
||
|
if (!cache[id]) {
|
||
|
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, };
|