From ebfef087ac65d333eff059d7fe2f8cdcb085e315 Mon Sep 17 00:00:00 2001 From: Linventif Date: Mon, 16 Sep 2024 13:20:00 +0000 Subject: [PATCH] Fix: add antispamer for websocket connection --- lua/gmod_integration/server/sv__websocket.lua | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/lua/gmod_integration/server/sv__websocket.lua b/lua/gmod_integration/server/sv__websocket.lua index 8d23bc3..9c6bec8 100644 --- a/lua/gmod_integration/server/sv__websocket.lua +++ b/lua/gmod_integration/server/sv__websocket.lua @@ -20,6 +20,7 @@ local function getWebSocketURL() return method .. "://" .. gmInte.config.websocketFQDN end +local nbOfTry = 0 function gmInte.setupWebSocket() local socket = GWSockets.createWebSocket(getWebSocketURL()) socket:setHeader("id", gmInte.config.id) @@ -47,13 +48,24 @@ function gmInte.setupWebSocket() gmInte.logError("WebSocket Error: " .. txt, true) end + function reconnect() + gmInte.log("WebSocket is not connected, trying to reconnect", true) + timer.Remove("gmInte:WebSocket:CheckConnection") + gmInte.setupWebSocket() + end + timer.Create("gmInte:WebSocket:CheckConnection", 4, 0, function() if !socket:isConnected() then - gmInte.log("WebSocket is not connected, trying to reconnect", true) - timer.Remove("gmInte:WebSocket:CheckConnection") - gmInte.setupWebSocket() + nbOfTry = nbOfTry + 1 + if nbOfTry > 10 && nbOfTry % 40 != 0 then return end + reconnect() end end) + + hook.Add("GmodIntegration:Websocket:Restart", "gmInte:WebSocket:Restart", function() + socket:close() + reconnect() + end) end hook.Add("InitPostEntity", "gmInte:ServerReady:WebSocket", function() timer.Simple(1, function() gmInte.setupWebSocket() end) end) \ No newline at end of file