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