前端代码
This commit is contained in:
59
node_modules/socket.io-client/build/esm/url.js
generated
vendored
Normal file
59
node_modules/socket.io-client/build/esm/url.js
generated
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
import { parse } from "engine.io-client";
|
||||
/**
|
||||
* URL parser.
|
||||
*
|
||||
* @param uri - url
|
||||
* @param path - the request path of the connection
|
||||
* @param loc - An object meant to mimic window.location.
|
||||
* Defaults to window.location.
|
||||
* @public
|
||||
*/
|
||||
export function url(uri, path = "", loc) {
|
||||
let obj = uri;
|
||||
// default to window.location
|
||||
loc = loc || (typeof location !== "undefined" && location);
|
||||
if (null == uri)
|
||||
uri = loc.protocol + "//" + loc.host;
|
||||
// relative path support
|
||||
if (typeof uri === "string") {
|
||||
if ("/" === uri.charAt(0)) {
|
||||
if ("/" === uri.charAt(1)) {
|
||||
uri = loc.protocol + uri;
|
||||
}
|
||||
else {
|
||||
uri = loc.host + uri;
|
||||
}
|
||||
}
|
||||
if (!/^(https?|wss?):\/\//.test(uri)) {
|
||||
if ("undefined" !== typeof loc) {
|
||||
uri = loc.protocol + "//" + uri;
|
||||
}
|
||||
else {
|
||||
uri = "https://" + uri;
|
||||
}
|
||||
}
|
||||
// parse
|
||||
obj = parse(uri);
|
||||
}
|
||||
// make sure we treat `localhost:80` and `localhost` equally
|
||||
if (!obj.port) {
|
||||
if (/^(http|ws)$/.test(obj.protocol)) {
|
||||
obj.port = "80";
|
||||
}
|
||||
else if (/^(http|ws)s$/.test(obj.protocol)) {
|
||||
obj.port = "443";
|
||||
}
|
||||
}
|
||||
obj.path = obj.path || "/";
|
||||
const ipv6 = obj.host.indexOf(":") !== -1;
|
||||
const host = ipv6 ? "[" + obj.host + "]" : obj.host;
|
||||
// define unique id
|
||||
obj.id = obj.protocol + "://" + host + ":" + obj.port + path;
|
||||
// define href
|
||||
obj.href =
|
||||
obj.protocol +
|
||||
"://" +
|
||||
host +
|
||||
(loc && loc.port === obj.port ? "" : ":" + obj.port);
|
||||
return obj;
|
||||
}
|
Reference in New Issue
Block a user