From e0842e061b246df215f21b83bafaec07fb1517a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Pilgaard=20Gr=C3=B8ndahl?= Date: Mon, 28 Aug 2023 14:20:24 +0200 Subject: [PATCH] init signalr --- .../Features/Chat/LargeChatComponent.razor | 2 +- src/web/Client/Jordnaer.Client.csproj | 1 + src/web/Server/Features/Chat/ChatApi.cs | 4 ++-- src/web/Server/Features/Chat/ChatHub.cs | 11 +++++++++++ src/web/Server/Program.cs | 16 ++++++++++++++++ src/web/Server/Properties/launchSettings.json | 2 +- 6 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 src/web/Server/Features/Chat/ChatHub.cs diff --git a/src/web/Client/Features/Chat/LargeChatComponent.razor b/src/web/Client/Features/Chat/LargeChatComponent.razor index 07bde36e..283b9174 100644 --- a/src/web/Client/Features/Chat/LargeChatComponent.razor +++ b/src/web/Client/Features/Chat/LargeChatComponent.razor @@ -25,7 +25,7 @@ - @if (_unreadMessages.TryGetValue(chat.Id, out var unreadMessageCount) && unreadMessageCount > 0) + @if (_unreadMessages?.TryGetValue(chat.Id, out var unreadMessageCount) is true && unreadMessageCount > 0) { @chat.GetDisplayName(_currentUser.Id) (@unreadMessageCount) } diff --git a/src/web/Client/Jordnaer.Client.csproj b/src/web/Client/Jordnaer.Client.csproj index 7f5a17c1..5d6fe510 100644 --- a/src/web/Client/Jordnaer.Client.csproj +++ b/src/web/Client/Jordnaer.Client.csproj @@ -15,6 +15,7 @@ + diff --git a/src/web/Server/Features/Chat/ChatApi.cs b/src/web/Server/Features/Chat/ChatApi.cs index b5d99167..cf0e1713 100644 --- a/src/web/Server/Features/Chat/ChatApi.cs +++ b/src/web/Server/Features/Chat/ChatApi.cs @@ -125,8 +125,8 @@ async Task CurrentUserIsNotPartOfChat() var chatMessages = await context.ChatMessages .AsNoTracking() - .Where(message => message.ChatId == chatId) - // Oldest messages first, so we get the right order in the chat + .Where(message => message.ChatId == chatId) + // Oldest messages first, so we get the right order in the chat .OrderBy(message => message.SentUtc) .Skip(skip) .Take(take) diff --git a/src/web/Server/Features/Chat/ChatHub.cs b/src/web/Server/Features/Chat/ChatHub.cs new file mode 100644 index 00000000..92f73f13 --- /dev/null +++ b/src/web/Server/Features/Chat/ChatHub.cs @@ -0,0 +1,11 @@ +using Microsoft.AspNetCore.SignalR; + +namespace Jordnaer.Server.Features.Chat; + +public class ChatHub : Hub +{ + public async Task SendMessage(string user, string message) + { + await Clients.All.SendAsync("ReceiveMessage", user, message); + } +} diff --git a/src/web/Server/Program.cs b/src/web/Server/Program.cs index c7dd1566..51b28114 100644 --- a/src/web/Server/Program.cs +++ b/src/web/Server/Program.cs @@ -11,6 +11,7 @@ using Jordnaer.Server.Features.Profile; using Jordnaer.Server.Features.UserSearch; using Microsoft.AspNetCore.HttpOverrides; +using Microsoft.AspNetCore.ResponseCompression; using Microsoft.FeatureManagement; using Serilog; @@ -62,8 +63,23 @@ builder.AddMassTransit(); + builder.Services.AddSignalR(); + if (!builder.Environment.IsDevelopment()) + { + builder.Services.AddResponseCompression(options => + { + options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat( + new[] { "application/octet-stream" }); + }); + } + var app = builder.Build(); + if (!app.Environment.IsDevelopment()) + { + app.UseResponseCompression(); + } + app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto diff --git a/src/web/Server/Properties/launchSettings.json b/src/web/Server/Properties/launchSettings.json index c68e9fee..ffcbcc27 100644 --- a/src/web/Server/Properties/launchSettings.json +++ b/src/web/Server/Properties/launchSettings.json @@ -8,7 +8,7 @@ "applicationUrl": "https://localhost:7116;http://localhost:5235", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", - "ConnectionStrings_JordnaerDbContext": "Server=localhost,1433;Database=jordnaer;User ID=sa;Password=b1509e74-7cdf-4575-96c5-70ac47115acc;Persist Security Info=False;TrustServerCertificate=true;" + "ConnectionStrings_JordnaerDbContext": "Server=localhost,1433;Database=jordnaer;User ID=sa;Password=6efe173b-3e33-4d6c-8f50-3e5f7cadd54c;Persist Security Info=False;TrustServerCertificate=true;" } } }