From 711f515f37bea2874a70d98048b030784f0e52a5 Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Thu, 12 Oct 2023 23:17:34 +0200 Subject: [PATCH] #196 - Add ping method to keep connection to clients active --- .../plugin/api/websocket/WebSocketHandler.scala | 1 + .../plugin/api/websocket/methods/PingMethod.scala | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/PingMethod.scala diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/WebSocketHandler.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/WebSocketHandler.scala index 1b89cdf4..577d93a7 100644 --- a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/WebSocketHandler.scala +++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/WebSocketHandler.scala @@ -15,6 +15,7 @@ class WebSocketHandler { private val sessions = new ConcurrentLinkedQueue[Session] private val methods: Map[String, MethodExecutable] = Map( + "ping" -> new PingMethod, "project-list" -> new ProjectListMethod, "project-current" -> new ProjectCurrentMethod, "project-open" -> new ProjectOpenMethod, diff --git a/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/PingMethod.scala b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/PingMethod.scala new file mode 100644 index 00000000..62594789 --- /dev/null +++ b/PlayWallPlugins/PlayWallPluginWebAPI/src/main/scala/de/tobias/playpad/plugin/api/websocket/methods/PingMethod.scala @@ -0,0 +1,15 @@ +package de.tobias.playpad.plugin.api.websocket.methods + +import com.google.gson.JsonObject +import de.tobias.playpad.plugin.api.websocket.MethodExecutable +import de.tobias.playpad.plugin.api.websocket.message.Message +import org.eclipse.jetty.websocket.api.Session + +class PingMethod extends MethodExecutable { + + override def execute(session: Session, message: Message): JsonObject = { + val response = new JsonObject() + response.addProperty("pong", System.currentTimeMillis()) + response + } +} -- GitLab