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