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