diff options
author | Madeline <46743919+MaddyUnderStars@users.noreply.github.com> | 2022-10-31 19:37:46 +1100 |
---|---|---|
committer | Madeline <46743919+MaddyUnderStars@users.noreply.github.com> | 2022-10-31 19:37:46 +1100 |
commit | 427a8f55ba5f3ec2843078c3426eade3d1b6daac (patch) | |
tree | 7bc81861e4babf4378971455bf7722f985c0b365 | |
parent | Fix message patching sending old message rather than updated one (diff) | |
download | server-427a8f55ba5f3ec2843078c3426eade3d1b6daac.tar.xz |
Fast connect but send identify
-rw-r--r-- | assets/client_test/index.html | 75 | ||||
-rw-r--r-- | scripts/client.js | 6 |
2 files changed, 80 insertions, 1 deletions
diff --git a/assets/client_test/index.html b/assets/client_test/index.html index 7306db60..31be10f1 100644 --- a/assets/client_test/index.html +++ b/assets/client_test/index.html @@ -46,7 +46,80 @@ </script> <!-- fast connect --> - <script>!function () { if (null != window.WebSocket) { if (function (n) { try { var e = localStorage.getItem(n); return null == e ? null : JSON.parse(e); } catch (n) { return null; } }("token") && !window.__OVERLAY__) { var n = null != window.DiscordNative || null != window.require ? "etf" : "json", e = window.GLOBAL_ENV.GATEWAY_ENDPOINT + "/?encoding=" + n + "&v=" + window.GLOBAL_ENV.API_VERSION + "&compress=zlib-stream"; console.log("[FAST CONNECT] connecting to: " + e); var o = new WebSocket(e); o.binaryType = "arraybuffer"; var t = Date.now(), i = { open: !1, identify: !1, gateway: e, messages: [] }; o.onopen = function () { console.log("[FAST CONNECT] connected in " + (Date.now() - t) + "ms"), i.open = !0; }, o.onclose = o.onerror = function () { window._ws = null; }, o.onmessage = function (n) { i.messages.push(n); }, window._ws = { ws: o, state: i }; } } }();</script> + <!-- <script>!function () { if (null != window.WebSocket) { if (function (n) { try { var e = localStorage.getItem(n); return null == e ? null : JSON.parse(e); } catch (n) { return null; } }("token") && !window.__OVERLAY__) { var n = null != window.DiscordNative || null != window.require ? "etf" : "json", e = window.GLOBAL_ENV.GATEWAY_ENDPOINT + "/?encoding=" + n + "&v=" + window.GLOBAL_ENV.API_VERSION + "&compress=zlib-stream"; console.log("[FAST CONNECT] connecting to: " + e); var o = new WebSocket(e); o.binaryType = "arraybuffer"; var t = Date.now(), i = { open: !1, identify: !1, gateway: e, messages: [] }; o.onopen = function () { console.log("[FAST CONNECT] connected in " + (Date.now() - t) + "ms"), i.open = !0; }, o.onclose = o.onerror = function () { window._ws = null; }, o.onmessage = function (n) { i.messages.push(n); }, window._ws = { ws: o, state: i }; } } }();</script> --> + + <!-- fast identify --> + <script> + (() => { + if (window.WebSocket == null) return; + if (window.__OVERLAY__) return; + + const getStorage = (key) => { + try { + return JSON.parse(localStorage.getItem(key)); + } + catch (e) { + return undefined; + } + }; + + const token = getStorage("token"); + if (!token) return; + + const encoding = window.DiscordNative != null || window.require != null ? "etf" : "json"; + const url = window.GLOBAL_ENV.GATEWAY_ENDPOINT + + "/?encoding=" + + encoding + + "&v=" + + window.GLOBAL_ENV.API_VERSION + + "&compress=zlib-stream"; + + console.log("[FAST IDENTIFY] connecting to:", url); + + const socket = new WebSocket(url); + socket.binaryType = "arraybuffer"; + const start = Date.now(); + const state = { open: false, identity: false, gateway: url, messages: [] }; + + socket.onopen = function () { + console.log(`[FAST IDENTIFY] connected in ${Date.now() - start}ms`); + state.open = true; + + console.log("[FAST IDENTIFY] Sending payload"); + state.identity = true; + const payload = { + op: 2, + d: { + token: token, + capabilities: 509, + properties: { + ...(getStorage("deviceProperties") || {}), + browser_user_agent: navigator.userAgent, + }, + compress: false, + presence: { + status: getStorage("UserSettingsStore")?.status || "online", + since: 0, + activities: [], + afk: false, + }, + } + }; + socket.send(JSON.stringify(payload)); + }; + + socket.onclose = socket.onerror = (e) => { + console.log("[FAST IDENTIFY] Failed", e); + window._ws = null; + }; + + socket.onmessage = (message) => { + state.messages.push(message); + }; + + window._ws = { ws: socket, state }; + })(); + </script> <!-- preload plugin marker --> </head> diff --git a/scripts/client.js b/scripts/client.js index b31f2fcc..b42217a0 100644 --- a/scripts/client.js +++ b/scripts/client.js @@ -119,6 +119,12 @@ const doPatch = (content) => { "console.log('Prevented deletion of localStorage')" ); + // fast identify + content = content.replaceAll( + "e.isFastConnect=t;t?e._doFastConnectIdentify():e._doResumeOrIdentify()", + "e.isFastConnect=t; if (t !== undefined) e._doResumeOrIdentify();" + ); + return content; }; |