diff --git a/lua/gmod_integration/server/sv_websocket.lua b/lua/gmod_integration/server/sv__websocket.lua similarity index 57% rename from lua/gmod_integration/server/sv_websocket.lua rename to lua/gmod_integration/server/sv__websocket.lua index 7d0723e..f955fde 100644 --- a/lua/gmod_integration/server/sv_websocket.lua +++ b/lua/gmod_integration/server/sv__websocket.lua @@ -21,6 +21,17 @@ end // log on message function socket:onMessage(txt) gmInte.log("WebSocket Message: " .. txt, true) + local data = util.JSONToTable(txt) + if (gmInte.config.debug) then + gmInte.log("WebSocket Message: " .. txt, true) + end + print(data.method) + print(gmInte[data.method] && "true" || "false") + if (gmInte[data.method]) then + gmInte[data.method](data) + else + gmInte.logError("WebSocket Message: " .. txt .. " is not a valid method !") + end end function socket:onDisconnected() @@ -31,10 +42,19 @@ function socket:onError(txt) gmInte.logError("WebSocket Error: " .. txt) end -function gmInte.websocketSend(data) - socket:send(util.TableToJSON(data)) +function gmInte.websocketWrite(data) + if (!socket:isConnected()) then + socket:open() + end + socket:write(util.TableToJSON(data || {})) end +timer.Create("gmInte:WebSocket:CheckConnection", 60, 0, function() + if (!socket:isConnected()) then + socket:open() + end +end) + hook.Add("InitPostEntity", "gmInte:ServerReady:WebSocket", function() timer.Simple(1, function() socket:open()