diff --git a/InnoLabProjektDektopApp/InnoLabProjektDektopApp/App.xaml.cs b/InnoLabProjektDektopApp/InnoLabProjektDektopApp/App.xaml.cs index 2898071bfcc4378aaee649515433bdb47221fce3..025d94d83d20aaba77726901bb980966b06d27e9 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 423c035f292be4cd3aa820f01ec3dabddfc75a54..832ee9d1be438c425b3fec5ab4270e9032871aad 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,34 @@ namespace InnoLabProjektDektopApp // Ereignis-Handler für den "Start"-Button private void StartButton_Click(object sender, RoutedEventArgs e) { + 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; diff --git a/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Services/WebSocketServer/Server.cs b/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Services/WebSocketServer/Server.cs new file mode 100644 index 0000000000000000000000000000000000000000..7d172fba09e67935d16a9ef61a506b482d7b9813 --- /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; + } + } + } +}