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.
57 lines
1.4 KiB
57 lines
1.4 KiB
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, };
|
|
|