From a372e7d358de4b393d14fd47934f040f2e0ed4b4 Mon Sep 17 00:00:00 2001 From: Ayc0 Date: Thu, 19 Dec 2024 19:14:46 +0100 Subject: [PATCH] ws --- .../posts/Others/monitoring-websockets.mdx | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/content/docs/posts/Others/monitoring-websockets.mdx diff --git a/src/content/docs/posts/Others/monitoring-websockets.mdx b/src/content/docs/posts/Others/monitoring-websockets.mdx new file mode 100644 index 0000000..b1ea18e --- /dev/null +++ b/src/content/docs/posts/Others/monitoring-websockets.mdx @@ -0,0 +1,42 @@ +--- +title: "Monitoring WebSockets" +tags: ["JS", "tip", "Monitoring"] +sidebar: + hidden: true +pagefind: false +--- + +:::caution[Warning] +Still in draft +::: + +```js +const GlobalWS = globalThis.WebSocket; + +const onMessage = console.log; +const onClose = console.log; +const onError = console.log; +const onOpen = console.log; + +class WebSocketWithHooks extends GlobalWS { + constructor(...args) { + super(...args); + + this.addEventListener("message", onMessage); + this.addEventListener("close", onClose); + this.addEventListener("error", onError); + this.addEventListener("open", onOpen); + + this.addEventListener("close", this.#removeListener, { once: true }); + } + + #removeListeners() { + this.removeEventListener("message", onMessage); + this.removeEventListener("close", onClose); + this.removeEventListener("error", onError); + this.removeEventListener("open", onOpen); + } +} + +globalThis.WebSocket = WebSocketWithHooks; +``` -- 2.51.2