SignalR, MessagePack, improvements, fixes, etc...
This commit is contained in:
parent
24d6ea5b68
commit
f261bdd748
|
|
@ -1,32 +1,28 @@
|
|||
@page "/user/transfers"
|
||||
@using BlazorAnimation
|
||||
@using TIAM.Core.Enums
|
||||
@using TIAM.Entities.ServiceProviders
|
||||
@using TIAM.Entities.Transfers
|
||||
@using TIAM.Models.Dtos.Users
|
||||
@using TIAM.Resources
|
||||
@using TIAMSharedUI.Pages.Components
|
||||
@using TIAMSharedUI.Shared
|
||||
@using TIAMWebApp.Shared.Application.Interfaces
|
||||
@using TIAMWebApp.Shared.Application.Models
|
||||
@using TIAMWebApp.Shared.Application.Models.ClientSide.UI
|
||||
@using TIAMWebApp.Shared.Application.Models.ClientSide.UI.WizardModels
|
||||
@using TIAMWebApp.Shared.Application.Models.ClientSide.Messages
|
||||
@using TIAMWebApp.Shared.Application.Models.PageModels
|
||||
@using TIAMWebApp.Shared.Application.Utility
|
||||
@using AyCode.Core.Loggers
|
||||
@using AyCode.Services.Loggers
|
||||
@using AyCode.Services.SignalRs
|
||||
@using TIAM.Core.Loggers
|
||||
@using TIAMWebApp.Shared.Application.Services
|
||||
@using AyCode.Core.Helpers
|
||||
@using MessagePack
|
||||
@using MessagePack.Resolvers
|
||||
@using AyCode.Core.Extensions;
|
||||
@layout AdminLayout
|
||||
@inject IEnumerable<IAcLogWriterClientBase> LogWriters
|
||||
@inject IStringLocalizer<TIAMResources> localizer
|
||||
@inject IWizardProcessor wizardProcessor
|
||||
@inject ITransferDataService transferDataService
|
||||
@inject ISessionService sessionService
|
||||
@* @inject DevAdminSignalClient DevAdminSignalClient; *@
|
||||
@inject DevAdminSignalClient devAdminSignalClient;
|
||||
<PageTitle>Transfers</PageTitle>
|
||||
|
||||
<div class="text-center m-5">
|
||||
|
|
@ -391,9 +387,28 @@
|
|||
{
|
||||
_logger = new LoggerClient<ManageTransfers>(LogWriters.ToArray());
|
||||
|
||||
//await DevAdminSignalClient.Get("", SignalRTags.GetTransfersAsync);
|
||||
devAdminSignalClient.OnMessageReceived += (messageTag, message) =>
|
||||
{
|
||||
if (messageTag == SignalRTags.PostTransfersAsync)
|
||||
{
|
||||
//InitializeDataSources(MessagePackSerializer.Deserialize<List<Transfer>>(message, ContractlessStandardResolver.Options));
|
||||
|
||||
TransferDataList = await transferDataService.GetTransfersAsync();
|
||||
var json = message?.MessagePackTo<string>(ContractlessStandardResolver.Options);
|
||||
|
||||
InitializeDataSources(json?.JsonTo<List<Transfer>>() ?? []);
|
||||
StateHasChanged();
|
||||
}
|
||||
};
|
||||
|
||||
await devAdminSignalClient.Send("", SignalRTags.GetTransfersAsync, null);
|
||||
|
||||
//InitializeDataSources(await transferDataService.GetTransfersAsync());
|
||||
base.OnInitialized();
|
||||
}
|
||||
|
||||
private void InitializeDataSources(List<Transfer> transferDataList)
|
||||
{
|
||||
TransferDataList = transferDataList;
|
||||
AppointmentModels = new List<AppointmentModel>(TransferDataList.Count);
|
||||
|
||||
foreach (var transfer in TransferDataList)
|
||||
|
|
@ -425,9 +440,6 @@
|
|||
|
||||
AppointmentsSource = AppointmentModels
|
||||
};
|
||||
|
||||
|
||||
base.OnInitialized();
|
||||
}
|
||||
|
||||
void ColumnChooserButton_Click()
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ builder.Services.AddSingleton(x => new ResourceManager("TIAMWebApp.Client.Resour
|
|||
builder.Services.AddSingleton<IAcLogWriterClientBase, BrowserConsoleLogWriter>();
|
||||
builder.Services.AddSingleton<IAcLogWriterClientBase, SignaRClientLogItemWriter>();
|
||||
//builder.Services.AddSingleton<IAcLogWriterClientBase, HttpClientLogItemWriter>();
|
||||
//builder.Services.AddSingleton<DevAdminSignalClient>();
|
||||
builder.Services.AddSingleton<DevAdminSignalClient>();
|
||||
builder.Services.AddSingleton<SignalRService>();
|
||||
builder.Services.AddSingleton<SumupService>();
|
||||
builder.Services.AddScoped<AuthenticationStateProvider, CustomAuthStateProvider>();
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ builder.Services.AddScoped<AuctionDal>();
|
|||
builder.Services.AddScoped<TransferDestinationDal>();
|
||||
builder.Services.AddSingleton<AuthService>();
|
||||
|
||||
builder.Services.AddSignalR().AddMessagePackProtocol(options => options.SerializerOptions = MessagePackSerializerOptions.Standard.WithSecurity(MessagePackSecurity.UntrustedData));
|
||||
builder.Services.AddSignalR();//.AddMessagePackProtocol(options => options.SerializerOptions = MessagePackSerializerOptions.Standard.WithSecurity(MessagePackSecurity.UntrustedData));
|
||||
|
||||
builder.Services.AddCors(options =>
|
||||
{
|
||||
|
|
@ -179,7 +179,7 @@ app.MapBlazorHub();
|
|||
//app.UseResponseCompression();
|
||||
app.MapHub<SignalRHub>("/TiamChatHub");
|
||||
app.MapHub<LoggerSignalRHub>("/TiamLoggerHub");
|
||||
//app.MapHub<DevAdminSignalRHub>("/DevAdminHub");
|
||||
app.MapHub<DevAdminSignalRHub>("/DevAdminHub");
|
||||
app.MapHub<GameHub>("/gamehub");
|
||||
|
||||
app.MapFallbackToFile("index.html");
|
||||
|
|
|
|||
|
|
@ -1,15 +1,16 @@
|
|||
using AyCode.Core.Loggers;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using System.ServiceModel.Channels;
|
||||
using AyCode.Services.Server.SignalRs;
|
||||
using AyCode.Core.Extensions;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Services.SignalRs;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using TIAM.Database.DataLayers.Admins;
|
||||
using MessagePack;
|
||||
using MessagePack.Resolvers;
|
||||
|
||||
namespace TIAMWebApp.Server.Services;
|
||||
|
||||
public class DevAdminSignalRHub(AdminDal adminDal, IEnumerable<IAcLogWriterBase> logWriters) : Hub<ISignalRHubServer>, ISignalRHubServer
|
||||
{
|
||||
private TIAM.Core.Loggers.Logger<DevAdminSignalRHub> _logger = new(logWriters.ToArray());
|
||||
private readonly TIAM.Core.Loggers.Logger<DevAdminSignalRHub> _logger = new(logWriters.ToArray());
|
||||
|
||||
// https://docs.microsoft.com/en-us/aspnet/core/signalr/hubs?view=aspnetcore-3.1#strongly-typed-hubs
|
||||
public override async Task OnConnectedAsync()
|
||||
|
|
@ -18,7 +19,7 @@ public class DevAdminSignalRHub(AdminDal adminDal, IEnumerable<IAcLogWriterBase>
|
|||
await base.OnConnectedAsync();
|
||||
}
|
||||
|
||||
public override async Task OnDisconnectedAsync(Exception exception)
|
||||
public override async Task OnDisconnectedAsync(Exception? exception)
|
||||
{
|
||||
_logger.Error($"OnDisconnectedAsync", exception);
|
||||
|
||||
|
|
@ -31,18 +32,20 @@ public class DevAdminSignalRHub(AdminDal adminDal, IEnumerable<IAcLogWriterBase>
|
|||
//await Clients.Group(groupId).Post("", messageTag, message);
|
||||
}
|
||||
|
||||
public async Task Get(string user, int messageTag)
|
||||
public async Task Send(string user, int messageTag, object? message)
|
||||
{
|
||||
_logger.Info($"{nameof(user)}: {user}; {nameof(messageTag)}: {messageTag}");
|
||||
|
||||
//await Clients.Caller.MessageReceived("", messageTag, MessagePackSerializer.Serialize(message, ContractlessStandardResolver.Options));
|
||||
await Clients.Caller.MessageReceived("", messageTag, message?.ToMessagePack(ContractlessStandardResolver.Options));
|
||||
}
|
||||
|
||||
public async Task MessageReceived(string user, int messageTag, byte[]? message)
|
||||
{
|
||||
_logger.Info($"{nameof(user)}: {user}; {nameof(messageTag)}: {messageTag}");
|
||||
|
||||
if (messageTag == SignalRTags.GetTransfersAsync)
|
||||
await Post("", SignalRTags.PostTransfersAsync, await adminDal.GetTransfersJsonAsync());
|
||||
await Send("", SignalRTags.PostTransfersAsync, await adminDal.GetTransfersJsonAsync());
|
||||
}
|
||||
|
||||
public async Task Post(string user, int messageTag, object? message)
|
||||
{
|
||||
_logger.Info($"{nameof(user)}: {user}; {nameof(messageTag)}: {messageTag}");
|
||||
|
||||
await Clients.Caller.Post("", messageTag, message);
|
||||
}
|
||||
}
|
||||
|
|
@ -7,6 +7,7 @@ using AyCode.Services.SignalRs;
|
|||
using MessagePack;
|
||||
using Microsoft.AspNetCore.SignalR.Client;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using TIAM.Entities.Transfers;
|
||||
using TIAMWebApp.Shared.Application.Models.ClientSide;
|
||||
using TIAMWebApp.Shared.Application.Utility;
|
||||
|
||||
|
|
@ -19,6 +20,8 @@ namespace TIAMWebApp.Shared.Application.Services
|
|||
protected readonly HubConnection HubConnection;
|
||||
protected readonly LoggerClient Logger;
|
||||
|
||||
public event Action<int, byte[]?> OnMessageReceived;
|
||||
|
||||
protected AcSignalRClientBase(string hubName, IEnumerable<IAcLogWriterClientBase> logWriters)
|
||||
{
|
||||
Logger = new LoggerClient(GetType().Name, logWriters.ToArray());
|
||||
|
|
@ -28,7 +31,7 @@ namespace TIAMWebApp.Shared.Application.Services
|
|||
//.AddMessagePackProtocol(options => options.SerializerOptions = MessagePackSerializerOptions.Standard.WithSecurity(MessagePackSecurity.UntrustedData))
|
||||
.Build();
|
||||
|
||||
HubConnection.On<string, int, object?>("Post", Post);
|
||||
_ = HubConnection.On<string, int, byte[]?>("MessageReceived", MessageReceived);
|
||||
|
||||
HubConnection.StartAsync().Forget();
|
||||
}
|
||||
|
|
@ -48,26 +51,29 @@ namespace TIAMWebApp.Shared.Application.Services
|
|||
await HubConnection.DisposeAsync();
|
||||
}
|
||||
|
||||
public virtual async Task Get(string user, int messageTag)
|
||||
public virtual async Task Send(string user, int messageTag, object? message)
|
||||
{
|
||||
Logger.Info($"{nameof(user)}: {user}; {nameof(messageTag)}: {messageTag}");
|
||||
Logger.Info($"Send; {nameof(user)}: {user}; {nameof(messageTag)}: {messageTag}");
|
||||
|
||||
await StartConnection();
|
||||
|
||||
await HubConnection.SendAsync("Get", "", SignalRTags.GetTransfersAsync);
|
||||
HubConnection.SendAsync("MessageReceived", "", messageTag, message).Forget();
|
||||
}
|
||||
|
||||
public virtual async Task Post(string user, int messageTag, object? message)
|
||||
public virtual Task MessageReceived(string user, int messageTag, byte[]? message)
|
||||
{
|
||||
Logger.Info($"{nameof(user)}: {user}; {nameof(messageTag)}: {messageTag}");
|
||||
Logger.Info($"MessageReceived; {nameof(user)}: {user}; {nameof(messageTag)}: {messageTag}");
|
||||
|
||||
if (messageTag == SignalRTags.PostTransfersAsync)
|
||||
try
|
||||
{
|
||||
return;
|
||||
OnMessageReceived(messageTag, message);
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
Logger.Error($"MessageReceived error; {ex.Message}", ex);
|
||||
throw;
|
||||
}
|
||||
|
||||
await StartConnection();
|
||||
await HubConnection.SendAsync("Post", SignalRTags.PostTransfersAsync, message);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ namespace TIAMWebApp.Shared.Application.Utility
|
|||
{
|
||||
private readonly HubConnection _hubConnection = new HubConnectionBuilder()
|
||||
.WithUrl($"{Setting.BaseUrl}/TiamLoggerHub")
|
||||
.AddMessagePackProtocol(options => options.SerializerOptions = MessagePackSerializerOptions.Standard.WithSecurity(MessagePackSecurity.UntrustedData))
|
||||
//.AddMessagePackProtocol(options => options.SerializerOptions = MessagePackSerializerOptions.Standard.WithSecurity(MessagePackSecurity.UntrustedData))
|
||||
.Build();
|
||||
|
||||
public SignaRClientLogItemWriter() : base(AppType.Web, LogLevel.Detail)
|
||||
|
|
|
|||
Loading…
Reference in New Issue