From 923b4654d153b96dd622604a2326c7e1489b97b9 Mon Sep 17 00:00:00 2001 From: ChrisChrome Date: Wed, 4 Sep 2024 09:02:53 -0600 Subject: [PATCH] Don't allow closing after close --- WebSocket.lua | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/WebSocket.lua b/WebSocket.lua index fcb1603..0ec6d95 100644 --- a/WebSocket.lua +++ b/WebSocket.lua @@ -19,6 +19,7 @@ local function notEmpty(s) end local ws = function (dict) + local closed = false local onMessage = dict.onMessage or function(msg) print(msg) end @@ -41,17 +42,13 @@ local ws = function (dict) }) if not resp.Success then error("Error Sending Message: " .. resp.StatusCode .. " " .. resp.StatusMessage) + return false + else + return true end end - local function close() - server:RequestAsync({ - ["Url"] = BaseUrl .. "/api/close/" .. JobId .. "/" .. id, - ["Method"] = "DELETE" - }) - end - - local loop = coroutine.create(function() + local loop = task.spawn(function() while wait(0.1) do print("poll") local response = server:RequestAsync({ @@ -72,7 +69,17 @@ local ws = function (dict) end end end) - coroutine.resume(loop) + + local function close() + if closed then return end + closed = true + server:RequestAsync({ + ["Url"] = BaseUrl .. "/api/close/" .. JobId .. "/" .. id, + ["Method"] = "DELETE" + }) + task.cancel(loop) + end + game:BindToClose(close) return { sendMessage = sendMessage,