diff --git a/RelayClient/MainPage.xaml.cs b/RelayClient/MainPage.xaml.cs index 659007e..88921cc 100644 --- a/RelayClient/MainPage.xaml.cs +++ b/RelayClient/MainPage.xaml.cs @@ -16,24 +16,27 @@ public partial class MainPage : ContentPage private void SendButton_OnClicked(object? sender, EventArgs e) { - SendMessage(); + SendMessage(sender, e); } private void MessageEntry_OnCompleted(object? sender, EventArgs e) { - SendMessage(); + SendMessage(sender, e); } - private void SendMessage() + private void SendMessage(object? sender, EventArgs e) { var text = MessageEntry.Text?.Trim(); if (string.IsNullOrWhiteSpace(text)) return; + + MauiProgram.wsc.Send($"{_username}:{text}"); - ChatSimulator.Send(_username, text); + // ChatSimulator.Send(_username, text); Console.WriteLine($"[{_username}] sent message: {text}"); + MessageEntry.Text = string.Empty; MessageEntry.Focus(); diff --git a/RelayClient/MauiProgram.cs b/RelayClient/MauiProgram.cs index 6eec3bd..f78c2f6 100644 --- a/RelayClient/MauiProgram.cs +++ b/RelayClient/MauiProgram.cs @@ -1,22 +1,26 @@ using Microsoft.Extensions.Logging; -using Microsoft.Maui.Hosting; +using WebSocketSharp; namespace RelayClient; public static class MauiProgram { + // public static event Action? MessageSent; + public static WebSocket wsc = new WebSocket("ws://localhost:1337"); public static MauiApp CreateMauiApp() { + wsc.OnMessage += (sender, e) => OnWebSocketRecieved(sender, e); + wsc.Connect(); var builder = MauiApp.CreateBuilder(); - builder - .UseMauiApp() - .ConfigureFonts(fonts => + builder.UseMauiApp().ConfigureFonts(fonts => { fonts.AddFont("AnonymousPro-Bold.ttf", "AnonymousProBold"); fonts.AddFont("AnonymousPro-BoldItalic.ttf", "AnonymousProBoldItalic"); fonts.AddFont("AnonymousPro-Italic.ttf", "AnonymousProItalic"); fonts.AddFont("AnonymousPro-Regular.ttf", "AnonymousProRegular"); }); + + #if DEBUG builder.Logging.AddDebug(); @@ -24,4 +28,20 @@ public static class MauiProgram return builder.Build(); } + + public static void OnWebSocketRecieved(object? sender, MessageEventArgs e) + { + Console.WriteLine(sender.ToString()); + + ChatSimulator.Send(e.Data.Split(":")[0], e.Data.Split(":")[1]); + + // var message = new ChatMessage + // { + // SenderUsername = e.Data.Split(":")[0], + // Text = e.Data.Split(":")[1], + // Timestamp = DateTime.Now + // }; + // + // MessageSent?.Invoke(message); + } } \ No newline at end of file diff --git a/RelayClient/RelayClient.csproj b/RelayClient/RelayClient.csproj index 39a8d37..5d0f8bc 100644 --- a/RelayClient/RelayClient.csproj +++ b/RelayClient/RelayClient.csproj @@ -42,6 +42,7 @@ + diff --git a/RelayCore/Program.cs b/RelayCore/Program.cs index 7075ac5..c3fbd64 100644 --- a/RelayCore/Program.cs +++ b/RelayCore/Program.cs @@ -16,7 +16,7 @@ var kira = await CreateUserAsync(db, "Ru_Kira", "jduesling13@gmail.com", "passwo Console.WriteLine($"Keeper created: {ToJsonString(keeper)}"); Console.WriteLine($"Kira created: {ToJsonString(kira)}"); - +Console.ReadKey(true); return; static string ToJsonString(object? o) diff --git a/RelayServer/Program.cs b/RelayServer/Program.cs index 4be6780..ad36140 100644 --- a/RelayServer/Program.cs +++ b/RelayServer/Program.cs @@ -1,4 +1,8 @@ using System.Text.Json; +using System; +using WebSocketSharp.Server; +using WebSocketSharp; + using RelayServer.Models; using RelayServer.Services; @@ -8,6 +12,13 @@ var cryptoService = new ChannelCryptoService(); await using var db = await surrealService.ConnectAsync(); +var wssv = new WebSocketServer("ws://localhost:1337"); +wssv.AddWebSocketService("/"); +wssv.Start(); +Console.WriteLine("WebSocket server started"); +Console.ReadKey(true); +wssv.Stop(); + var keeper = await coreClient.GetUserByUsernameAsync("Keeper317"); var kira = await coreClient.GetUserByUsernameAsync("Ru_Kira"); @@ -62,8 +73,6 @@ Console.WriteLine($"Channel created: {ToJsonString(channel)}"); var channelId = GetRecordId(channel.Id); Console.WriteLine($"Resolved channelId: {channelId}"); -Console.WriteLine($"Channel created: {ToJsonString(channel)}"); - var keyBase64 = cryptoService.GenerateKey(); var serverKey = await db.Create("server_encryption_keys", new ServerEncryptionKeys @@ -149,4 +158,15 @@ static string GetRecordId(object? id) var table = root.GetProperty("Table").GetString() ?? string.Empty; return $"{table}:{recordId}"; +} + +public class ChatTest : WebSocketBehavior +{ + protected override void OnMessage(MessageEventArgs e) + { + // var msg = e.Data.Split(":")[1] == "PING" ? "SERVER:PONG" : "SERVER:RESPONSE"; + var msg = e.Data; + Console.WriteLine(msg); + Send(msg); + } } \ No newline at end of file diff --git a/RelayServer/RelayServer.csproj b/RelayServer/RelayServer.csproj index 11711eb..78b8450 100644 --- a/RelayServer/RelayServer.csproj +++ b/RelayServer/RelayServer.csproj @@ -9,6 +9,7 @@ +