improvements, fixes
This commit is contained in:
parent
1131b5675b
commit
2ecc7b1a7a
|
|
@ -0,0 +1,14 @@
|
|||
using System.Collections;
|
||||
|
||||
namespace AyCode.Core.Interfaces;
|
||||
|
||||
public interface IForeignKey
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public interface IForeignCollection<T> : IForeignCollection where T : IEnumerable
|
||||
{}
|
||||
|
||||
public interface IForeignCollection
|
||||
{}
|
||||
|
|
@ -1,8 +1,9 @@
|
|||
using AyCode.Interfaces.Entities;
|
||||
using AyCode.Core.Interfaces;
|
||||
using AyCode.Interfaces.Entities;
|
||||
|
||||
namespace AyCode.Interfaces.Addresses;
|
||||
|
||||
public interface IAcAddressForeignKey : IEntityGuid
|
||||
public interface IAcAddressForeignKey : IEntityGuid, IForeignKey
|
||||
{
|
||||
public Guid AddressId { get; set; }
|
||||
}
|
||||
|
|
@ -1,4 +1,6 @@
|
|||
namespace AyCode.Interfaces;
|
||||
using AyCode.Core.Interfaces;
|
||||
|
||||
namespace AyCode.Interfaces;
|
||||
|
||||
public interface ICustomForeignKeyInt : ICustomForeignKey<int>
|
||||
{ }
|
||||
|
|
@ -6,7 +8,7 @@ public interface ICustomForeignKeyInt : ICustomForeignKey<int>
|
|||
public interface ICustomForeignKeyGuid : ICustomForeignKey<Guid>
|
||||
{ }
|
||||
|
||||
public interface ICustomForeignKey<out T>
|
||||
public interface ICustomForeignKey<out T> : IForeignKey
|
||||
{
|
||||
T ForeignKey { get; }
|
||||
}
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
namespace AyCode.Interfaces.Messages;
|
||||
using AyCode.Core.Interfaces;
|
||||
|
||||
public interface IAcEmailMessageForeignKey<T>
|
||||
namespace AyCode.Interfaces.Messages;
|
||||
|
||||
public interface IAcEmailMessageForeignKey<T> : IForeignKey
|
||||
{
|
||||
public T EmailMessageId { get; set; }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
namespace AyCode.Interfaces.Profiles;
|
||||
using AyCode.Core.Interfaces;
|
||||
|
||||
public interface IAcProfileForeignKey
|
||||
namespace AyCode.Interfaces.Profiles;
|
||||
|
||||
public interface IAcProfileForeignKey : IForeignKey
|
||||
{
|
||||
public Guid ProfileId { get; set; }
|
||||
}
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
namespace AyCode.Interfaces.ServiceProviders;
|
||||
using AyCode.Core.Interfaces;
|
||||
|
||||
public interface IAcCompanyForeignKey
|
||||
namespace AyCode.Interfaces.ServiceProviders;
|
||||
|
||||
public interface IAcCompanyForeignKey : IForeignKey
|
||||
{
|
||||
public Guid ServiceProviderId { get; set; }
|
||||
}
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
namespace AyCode.Interfaces.Users;
|
||||
using AyCode.Core.Interfaces;
|
||||
|
||||
public interface IAcUserForeignKey
|
||||
namespace AyCode.Interfaces.Users;
|
||||
|
||||
public interface IAcUserForeignKey : IForeignKey
|
||||
{
|
||||
Guid UserId { get; set; }
|
||||
}
|
||||
|
|
@ -163,34 +163,36 @@ public abstract class AcWebSignalRHubBase<TSignalRTags, TLogger>(IConfiguration
|
|||
protected Task ResponseToCaller2(int messageTag, object? content)
|
||||
=> ResponseToCaller(messageTag, new SignalResponseJsonMessage(messageTag, SignalResponseStatus.Success, content), null);
|
||||
|
||||
protected async Task ResponseToCaller(int messageTag, ISignalRMessage message, int? requestId)
|
||||
=> await SendMessageToClient(Clients.Caller, messageTag, message, requestId);
|
||||
protected Task ResponseToCaller(int messageTag, ISignalRMessage message, int? requestId)
|
||||
=> SendMessageToClient(Clients.Caller, messageTag, message, requestId);
|
||||
|
||||
protected Task SendMessageToUserId2(string userId, int messageTag, object? content)
|
||||
=> SendMessageToUserId(userId, messageTag, new SignalResponseJsonMessage(messageTag, SignalResponseStatus.Success, content), null);
|
||||
|
||||
public async Task SendMessageToUserId(string userId, int messageTag, ISignalRMessage message, int? requestId)
|
||||
=> await SendMessageToClient(Clients.User(userId), messageTag, message, requestId);
|
||||
public Task SendMessageToUserId(string userId, int messageTag, ISignalRMessage message, int? requestId)
|
||||
=> SendMessageToClient(Clients.User(userId), messageTag, message, requestId);
|
||||
|
||||
public async Task SendMessageToConnectionId2(string connectionId, int messageTag, object? content)
|
||||
=> await SendMessageToConnectionId(connectionId, messageTag, new SignalResponseJsonMessage(messageTag, SignalResponseStatus.Success, content), null);
|
||||
public Task SendMessageToConnectionId2(string connectionId, int messageTag, object? content)
|
||||
=> SendMessageToConnectionId(connectionId, messageTag, new SignalResponseJsonMessage(messageTag, SignalResponseStatus.Success, content), null);
|
||||
|
||||
public async Task SendMessageToConnectionId(string connectionId, int messageTag, ISignalRMessage message, int? requestId)
|
||||
=> await SendMessageToClient(Clients.Client(Context.ConnectionId), messageTag, message, requestId);
|
||||
public Task SendMessageToConnectionId(string connectionId, int messageTag, ISignalRMessage message, int? requestId)
|
||||
=> SendMessageToClient(Clients.Client(Context.ConnectionId), messageTag, message, requestId);
|
||||
|
||||
public async Task SendMessageToOtherClients(int messageTag, object? content)
|
||||
=> await SendMessageToClient(Clients.Others, messageTag, new SignalResponseJsonMessage(messageTag, SignalResponseStatus.Success, content), null);
|
||||
public Task SendMessageToOtherClients(int messageTag, object? content)
|
||||
=> SendMessageToClient(Clients.Others, messageTag, new SignalResponseJsonMessage(messageTag, SignalResponseStatus.Success, content), null);
|
||||
|
||||
public async Task SendMessageToAllClients(int messageTag, object? content)
|
||||
=> await SendMessageToClient(Clients.All, messageTag, new SignalResponseJsonMessage(messageTag, SignalResponseStatus.Success, content), null);
|
||||
public Task SendMessageToAllClients(int messageTag, object? content)
|
||||
=> SendMessageToClient(Clients.All, messageTag, new SignalResponseJsonMessage(messageTag, SignalResponseStatus.Success, content), null);
|
||||
|
||||
|
||||
protected async Task SendMessageToClient(IAcSignalRHubItemServer sendTo, int messageTag, ISignalRMessage message, int? requestId = null)
|
||||
{
|
||||
var responseDataMessagePack = message.ToMessagePack(ContractlessStandardResolver.Options);
|
||||
Logger.Info($"[{(responseDataMessagePack.Length/1024)}kb] Server sending responseDataMessagePack to client; {nameof(requestId)}: {requestId}; ConnectionId: {Context.ConnectionId}; {ConstHelper.NameByValue<TSignalRTags>(messageTag)}");
|
||||
Logger.Info($"[{(responseDataMessagePack.Length/1024)}kb] Server sending responseDataMessagePack to client; {nameof(requestId)}: {requestId}; Aborted: {Context.ConnectionAborted.IsCancellationRequested}; ConnectionId: {Context.ConnectionId}; {ConstHelper.NameByValue<TSignalRTags>(messageTag)}");
|
||||
|
||||
await sendTo.OnReceiveMessage(messageTag, responseDataMessagePack, requestId);
|
||||
|
||||
Logger.Info($"Server sent responseDataMessagePack to client; {nameof(requestId)}: {requestId}; Aborted: {Context.ConnectionAborted.IsCancellationRequested}; ConnectionId: {Context.ConnectionId}; {ConstHelper.NameByValue<TSignalRTags>(messageTag)}");
|
||||
}
|
||||
|
||||
public async Task SendMessageToGroup(string groupId, int messageTag, string message)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,10 @@ using AyCode.Core.Helpers;
|
|||
using AyCode.Core.Loggers;
|
||||
using AyCode.Interfaces.Entities;
|
||||
using MessagePack.Resolvers;
|
||||
using Microsoft.AspNetCore.Connections;
|
||||
using Microsoft.AspNetCore.Http.Connections;
|
||||
using Microsoft.AspNetCore.SignalR.Client;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace AyCode.Services.SignalRs
|
||||
{
|
||||
|
|
@ -22,7 +25,7 @@ namespace AyCode.Services.SignalRs
|
|||
public int ConnectionTimeout = 10000;
|
||||
public int TransportSendTimeout = 60000;
|
||||
private const string TagsName = "SignalRTags";
|
||||
|
||||
|
||||
protected AcSignalRClientBase(string fullHubName, AcLoggerBase logger)
|
||||
{
|
||||
Logger = logger;
|
||||
|
|
@ -30,11 +33,36 @@ namespace AyCode.Services.SignalRs
|
|||
|
||||
//TODO: HubConnectionBuilder constructor!!! - J.
|
||||
HubConnection = new HubConnectionBuilder()
|
||||
.WithUrl(fullHubName)
|
||||
//.WithUrl(fullHubName)
|
||||
.WithUrl(fullHubName, HttpTransportType.WebSockets,
|
||||
options =>
|
||||
{
|
||||
options.TransportMaxBufferSize = 30_000_000; //Increasing this value allows the client to receive larger messages. default: 65KB; unlimited: 0;;
|
||||
options.ApplicationMaxBufferSize = 30_000_000; //Increasing this value allows the client to send larger messages. default: 65KB; unlimited: 0;
|
||||
options.CloseTimeout = TimeSpan.FromSeconds(10); //default: 5 sec.
|
||||
|
||||
//options.AccessTokenProvider = null;
|
||||
//options.HttpMessageHandlerFactory = null;
|
||||
//options.Headers["CustomData"] = "value";
|
||||
//options.SkipNegotiation = true;
|
||||
//options.ClientCertificates = new System.Security.Cryptography.X509Certificates.X509CertificateCollection();
|
||||
//options.Cookies = new System.Net.CookieContainer();
|
||||
//options.DefaultTransferFormat = TransferFormat.Text;
|
||||
//options.Credentials = null;
|
||||
//options.Proxy = null;
|
||||
//options.UseDefaultCredentials = true;
|
||||
//options.WebSocketConfiguration = null;
|
||||
//options.WebSocketFactory = null;
|
||||
})
|
||||
//.ConfigureLogging(logging =>
|
||||
//{
|
||||
// logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
|
||||
// logging.AddConsole();
|
||||
//})
|
||||
.WithAutomaticReconnect()
|
||||
.WithStatefulReconnect()
|
||||
.WithKeepAliveInterval(TimeSpan.FromSeconds(60))
|
||||
.WithServerTimeout(TimeSpan.FromSeconds(120))
|
||||
.WithServerTimeout(TimeSpan.FromSeconds(180))
|
||||
//.AddMessagePackProtocol(options => {
|
||||
// options.SerializerOptions = MessagePackSerializerOptions.Standard
|
||||
// .WithResolver(MessagePack.Resolvers.StandardResolver.Instance)
|
||||
|
|
@ -80,11 +108,18 @@ namespace AyCode.Services.SignalRs
|
|||
|
||||
public virtual Task SendMessageToServerAsync(int messageTag, ISignalRMessage? message, int? requestId)
|
||||
{
|
||||
Logger.DebugConditional($"Client SendMessageToServerAsync; {nameof(requestId)}: {requestId}; {ConstHelper.NameByValue(TagsName, messageTag)}");
|
||||
Logger.DebugConditional($"Client SendMessageToServerAsync sending; {nameof(requestId)}: {requestId}; ConnectionSate: {HubConnection.State}; {ConstHelper.NameByValue(TagsName, messageTag)}");
|
||||
|
||||
var msgp = message?.ToMessagePack(ContractlessStandardResolver.Options);
|
||||
|
||||
return StartConnection().ContinueWith(_ =>
|
||||
{
|
||||
var msgp = message?.ToMessagePack(ContractlessStandardResolver.Options);
|
||||
if (HubConnection.State != HubConnectionState.Connected)
|
||||
{
|
||||
Logger.Error($"Client SendMessageToServerAsync error! ConnectionSate: {HubConnection.State};");
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
return HubConnection.SendAsync(nameof(IAcSignalRHubClient.OnReceiveMessage), messageTag, msgp, requestId);
|
||||
});
|
||||
}
|
||||
|
|
@ -125,7 +160,7 @@ namespace AyCode.Services.SignalRs
|
|||
return GetAllAsync<List<TResponseItem>>(messageTag, response =>
|
||||
{
|
||||
var logText = $"GetAllIntoAsync<{typeof(TResponseItem).Name}>(); status: {response.Status}; dataCount: {response.ResponseData?.Count}; {ConstHelper.NameByValue(TagsName, messageTag)};";
|
||||
|
||||
|
||||
intoList.Clear();
|
||||
|
||||
if (response.Status == SignalResponseStatus.Success && response.ResponseData != null)
|
||||
|
|
@ -228,7 +263,7 @@ namespace AyCode.Services.SignalRs
|
|||
var reqId = requestId.Value;
|
||||
|
||||
_responseByRequestId[reqId].ResponseDateTime = DateTime.UtcNow;
|
||||
Logger.Info($"[{_responseByRequestId[reqId].ResponseDateTime.Subtract(_responseByRequestId[reqId].RequestDateTime).TotalMilliseconds:N0}ms][{(messageBytes.Length/1024)}kb]{logText}");
|
||||
Logger.Info($"[{_responseByRequestId[reqId].ResponseDateTime.Subtract(_responseByRequestId[reqId].RequestDateTime).TotalMilliseconds:N0}ms][{(messageBytes.Length / 1024)}kb]{logText}");
|
||||
|
||||
var responseMessage = messageBytes.MessagePackTo<SignalResponseJsonMessage>(ContractlessStandardResolver.Options);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue