From 807fc972a1eb61930fead0a91b53b5cb998f5137 Mon Sep 17 00:00:00 2001
From: Marcel <marcel.kehrberg@student.reutlingen-university.de>
Date: Sun, 9 Mar 2025 06:11:17 +0100
Subject: [PATCH 1/2] WebSocket Server

---
 .../InnoLabProjektDektopApp/App.xaml.cs       |  2 +
 .../Screens/Regulaer/01Overview.xaml.cs       |  2 +
 .../Services/WebSocketServer/Server.cs        | 69 +++++++++++++++++++
 3 files changed, 73 insertions(+)
 create mode 100644 InnoLabProjektDektopApp/InnoLabProjektDektopApp/Services/WebSocketServer/Server.cs

diff --git a/InnoLabProjektDektopApp/InnoLabProjektDektopApp/App.xaml.cs b/InnoLabProjektDektopApp/InnoLabProjektDektopApp/App.xaml.cs
index 2898071..025d94d 100644
--- a/InnoLabProjektDektopApp/InnoLabProjektDektopApp/App.xaml.cs
+++ b/InnoLabProjektDektopApp/InnoLabProjektDektopApp/App.xaml.cs
@@ -1,4 +1,5 @@
 using InnoLabProjektDektopApp.Services;
+using InnoLabProjektDektopApp.Services.WebSocketServer;
 using InnoLabProjektDektopApp.Utils;
 using System.Configuration;
 using System.Data;
@@ -30,6 +31,7 @@ namespace InnoLabProjektDektopApp
         {
             _notifyIconManager.Initialize();
             base.OnStartup(e);
+            var server = Server.Instance;
         }
 
         protected override void OnExit(ExitEventArgs e)
diff --git a/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Screens/Regulaer/01Overview.xaml.cs b/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Screens/Regulaer/01Overview.xaml.cs
index 423c035..497da76 100644
--- a/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Screens/Regulaer/01Overview.xaml.cs
+++ b/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Screens/Regulaer/01Overview.xaml.cs
@@ -1,4 +1,5 @@
 using InnoLabProjektDektopApp.Services;
+using InnoLabProjektDektopApp.Services.WebSocketServer;
 using System.IO;
 using System.Net.Sockets;
 using System.Text.Json;
@@ -266,6 +267,7 @@ namespace InnoLabProjektDektopApp
         // Ereignis-Handler für den "Start"-Button
         private void StartButton_Click(object sender, RoutedEventArgs e)
         {
+            Server.Instance.SendMessageToAllClients("true");
             // Werte auslesen
             int focusPeriod;
 
diff --git a/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Services/WebSocketServer/Server.cs b/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Services/WebSocketServer/Server.cs
new file mode 100644
index 0000000..7d172fb
--- /dev/null
+++ b/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Services/WebSocketServer/Server.cs
@@ -0,0 +1,69 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Fleck;
+
+namespace InnoLabProjektDektopApp.Services.WebSocketServer
+{
+    class Server
+    {
+        private static Server instance = null;
+        private Fleck.WebSocketServer server;
+        private List<IWebSocketConnection> clients = new List<IWebSocketConnection>();
+
+        private Server()
+        {
+            Console.WriteLine("Server Construction");
+
+            server = new Fleck.WebSocketServer("ws://127.0.0.1:8080");
+
+            server.Start(socket =>
+            {
+                socket.OnOpen = () =>
+                {
+                    Console.WriteLine("Client verbunden");
+                    clients.Add(socket);
+                };
+
+                socket.OnClose = () =>
+                {
+                    Console.WriteLine("Client getrennt");
+                    clients.Remove(socket);
+                };
+
+                socket.OnMessage = message =>
+                {
+                    Console.WriteLine($"Empfangen: {message}");
+                    socket.Send("Hallo vom Server");
+                };
+
+                
+            });
+        }
+
+        public void SendMessageToAllClients(string message)
+        {
+            foreach (var client in clients)
+            {
+                client.Send(message);
+            }
+        }
+
+
+        // Öffentliche statische Methode, um auf die Instanz des Servers zuzugreifen
+        public static Server Instance
+        {
+            get
+            {
+                // Wenn noch keine Instanz existiert, wird sie erzeugt
+                if (instance == null)
+                {
+                    instance = new Server();
+                }
+                return instance;
+            }
+        }
+    }
+}
-- 
GitLab


From 8b3a4249864bdccad871c529a6631dbc21fe4b6b Mon Sep 17 00:00:00 2001
From: Marcel <marcel.kehrberg@student.reutlingen-university.de>
Date: Sun, 9 Mar 2025 15:39:19 +0100
Subject: [PATCH 2/2] =?UTF-8?q?Overview=20aufruf=20der=20Send=20methode=20?=
 =?UTF-8?q?f=C3=BCr=20distractingWebsites?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../Screens/Regulaer/01Overview.xaml.cs       | 29 ++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Screens/Regulaer/01Overview.xaml.cs b/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Screens/Regulaer/01Overview.xaml.cs
index 497da76..832ee9d 100644
--- a/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Screens/Regulaer/01Overview.xaml.cs
+++ b/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Screens/Regulaer/01Overview.xaml.cs
@@ -267,7 +267,34 @@ namespace InnoLabProjektDektopApp
         // Ereignis-Handler für den "Start"-Button
         private void StartButton_Click(object sender, RoutedEventArgs e)
         {
-            Server.Instance.SendMessageToAllClients("true");
+            Server.Instance.SendMessageToAllClients("{\"action\": \"startTracking\", \"status\": true}");
+
+            try
+            {
+                string jsonContent = File.ReadAllText("F:\\Dokumente\\Schule\\Studium\\InoLab\\procrastinator\\InnoLabProjektDektopApp\\InnoLabProjektDektopApp\\Assets\\distractingWebsites.json");
+                //string message = $"{{\"action\": \"sendJsonContent\", \"status\": true, \"content\": {jsonContent}}}";
+
+                // Erstelle ein Objekt für die Nachricht
+                var messageObject = new
+                {
+                    action = "sendJsonContent",
+                    status = true,
+                    content = JsonSerializer.Deserialize<object>(jsonContent) // Parse den JSON-Inhalt
+                };
+
+                // Serialisiere das Objekt zu einem JSON-String
+                string message = JsonSerializer.Serialize(messageObject);
+
+                Server.Instance.SendMessageToAllClients(message);
+            }
+            catch
+            {
+
+            }
+
+
+
+
             // Werte auslesen
             int focusPeriod;
 
-- 
GitLab