|
import { url } from "./url.js"; |
|
import { Manager } from "./manager.js"; |
|
import { Socket } from "./socket.js"; |
|
|
|
|
|
|
|
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); |
|
} |
|
|
|
|
|
Object.assign(lookup, { |
|
Manager, |
|
Socket, |
|
io: lookup, |
|
connect: lookup, |
|
}); |
|
|
|
|
|
|
|
|
|
|
|
export { protocol } from "socket.io-parser"; |
|
|
|
|
|
|
|
|
|
|
|
export { Manager, Socket, lookup as io, lookup as connect, lookup as default, }; |
|
|