From cc0fc114070902b4d0eb40dac7f5902249a75a8a Mon Sep 17 00:00:00 2001 From: retoor Date: Thu, 2 Jan 2025 19:30:00 +0000 Subject: [PATCH] fix: add reconnection logic and guard in Metriki emit methods - Wrap ws.send in try-catch to handle connection failures gracefully - Set isConnected to false and schedule retry via emitVisit after 500ms on error - Add early return guard in emitVisit to skip emission when not rendered or connected --- src/metriki/static/metriki.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/metriki/static/metriki.js b/src/metriki/static/metriki.js index c2dfd60..c687f71 100644 --- a/src/metriki/static/metriki.js +++ b/src/metriki/static/metriki.js @@ -26,9 +26,20 @@ class Metriki { } } emit(data){ - this.ws.send(JSON.stringify(data)) + const me = this + try{ + this.ws.send(JSON.stringify(data)) + }catch(e){ + this.isConnected = false + setTimeout(() => { + me.emitVisit() + },500) + } } emitVisit(){ + if(!(this.isRendered && this.isConnected)) { + return; + } this.emit({"href":window.location.href,"html":document.documentElement.outerHTML,"title":document.title,"domain":window.location.host}) this.addEventListeners() }