/
index.ts
96 lines (81 loc) · 1.91 KB
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import { url } from "./url";
import { Manager, ManagerOptions } from "./manager";
import { Socket, SocketOptions } from "./socket";
const debug = require("debug")("socket.io-client");
/**
* Module exports.
*/
module.exports = exports = lookup;
/**
* Managers cache.
*/
const 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.
*
* @public
*/
function lookup(opts?: Partial<ManagerOptions | SocketOptions>): Socket;
function lookup(
uri: string,
opts?: Partial<ManagerOptions | SocketOptions>
): Socket;
function lookup(uri: any, opts?: any): Socket {
if (typeof uri === "object") {
opts = uri;
uri = undefined;
}
opts = opts || {};
const parsed = url(uri);
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.query;
}
return io.socket(parsed.path, opts);
}
/**
* Protocol version.
*
* @public
*/
export { protocol } from "socket.io-parser";
/**
* `connect`.
*
* @param {String} uri
* @public
*/
exports.connect = lookup;
/**
* Expose constructors for standalone build.
*
* @public
*/
export { Manager, ManagerOptions } from "./manager";
export { lookup as io, Socket, SocketOptions };