const __SERVER__NAME = "{{host}}"; const __PATH = "echo"; let __SCHEME; let __PORT; if (url_has_flag('h2')) { __SCHEME = 'wss'; __PORT = "{{ports[h2][0]}}"; } else if (url_has_variant('wss') || location.protocol === 'https:') { __SCHEME = 'wss'; __PORT = "{{ports[wss][0]}}"; } else { __SCHEME = 'ws'; __PORT = "{{ports[ws][0]}}"; } const SCHEME_DOMAIN_PORT = __SCHEME + '://' + __SERVER__NAME + ':' + __PORT; function url_has_variant(variant) { const params = new URLSearchParams(location.search); return params.get(variant) === ""; } function url_has_flag(flag) { const params = new URLSearchParams(location.search); return params.getAll("wpt_flags").indexOf(flag) !== -1; } function IsWebSocket() { if (!self.WebSocket) { assert_true(false, "Browser does not support WebSocket"); } } function CreateWebSocketNonAsciiProtocol(nonAsciiProtocol) { IsWebSocket(); const url = SCHEME_DOMAIN_PORT + "/" + __PATH; return new WebSocket(url, nonAsciiProtocol); } function CreateWebSocketWithAsciiSep(asciiWithSep) { IsWebSocket(); const url = SCHEME_DOMAIN_PORT + "/" + __PATH; return new WebSocket(url, asciiWithSep); } function CreateWebSocketWithBlockedPort(blockedPort) { IsWebSocket(); const url = __SCHEME + "://" + __SERVER__NAME + ":" + blockedPort + "/" + __PATH; return new WebSocket(url); } function CreateWebSocketWithSpaceInUrl(urlWithSpace) { IsWebSocket(); const url = __SCHEME + "://" + urlWithSpace + ":" + __PORT + "/" + __PATH; return new WebSocket(url); } function CreateWebSocketWithSpaceInProtocol(protocolWithSpace) { IsWebSocket(); const url = SCHEME_DOMAIN_PORT + "/" + __PATH; return new WebSocket(url, protocolWithSpace); } function CreateWebSocketWithRepeatedProtocols() { IsWebSocket(); const url = SCHEME_DOMAIN_PORT + "/" + __PATH; return new WebSocket(url, ["echo", "echo"]); } function CreateWebSocketWithRepeatedProtocolsCaseInsensitive() { IsWebSocket(); const url = SCHEME_DOMAIN_PORT + "/" + __PATH; wsocket = new WebSocket(url, ["echo", "eCho"]); } function CreateInsecureWebSocket() { IsWebSocket(); const url = `ws://${__SERVER__NAME}:{{ports[ws][0]}}/${__PATH}`; return new WebSocket(url); } function CreateWebSocket(isProtocol, isProtocols) { IsWebSocket(); const url = SCHEME_DOMAIN_PORT + "/" + __PATH; if (isProtocol) { return new WebSocket(url, "echo"); } if (isProtocols) { return new WebSocket(url, ["echo", "chat"]); } return new WebSocket(url); }