[LOADED_DOCS: .github\copilot-instructions.md]

Update DB config, docs, and SignalR binary protocol setup

- Switched appsettings.json connection string to production DB.
- Added "Shared Agent Skills" section to copilot-instructions.md in both main and Mango.Nop Libraries repos.
- Refactored PluginNopStartup.cs: improved using statements, updated SignalR to use AddAcBinaryProtocol with explicit options, removed manual IHubProtocol registration, and added protocol diagnostics.
- No business logic changes; focused on configuration, documentation, and infrastructure.
This commit is contained in:
Loretta 2026-04-22 22:45:06 +02:00
parent 98f3000794
commit c5bed0b22a
1 changed files with 20 additions and 10 deletions

View File

@ -1,6 +1,8 @@
//using AyCode.Core.Loggers; //using AyCode.Core.Loggers;
using AyCode.Core.Loggers; using AyCode.Core.Loggers;
using AyCode.Core.Serializers.Binaries;
using AyCode.Services.Server.SignalRs;
using AyCode.Services.SignalRs; using AyCode.Services.SignalRs;
using DevExpress.AspNetCore; using DevExpress.AspNetCore;
using FruitBank.Common; using FruitBank.Common;
@ -17,6 +19,7 @@ using Microsoft.AspNetCore.SignalR;
using Microsoft.AspNetCore.SignalR.Protocol; using Microsoft.AspNetCore.SignalR.Protocol;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Nop.Core.Domain.Orders; using Nop.Core.Domain.Orders;
using Nop.Core.Infrastructure; using Nop.Core.Infrastructure;
using Nop.Data; using Nop.Data;
@ -36,7 +39,7 @@ using Nop.Web.Areas.Admin.Factories;
using Nop.Web.Areas.Admin.Models.Catalog; using Nop.Web.Areas.Admin.Models.Catalog;
using Nop.Web.Areas.Admin.Models.Orders; using Nop.Web.Areas.Admin.Models.Orders;
using System.Net.Http.Headers; using System.Net.Http.Headers;
using AyCode.Core.Serializers.Binaries; using Mango.Nop.Core.Loggers;
namespace Nop.Plugin.Misc.FruitBankPlugin.Infrastructure; namespace Nop.Plugin.Misc.FruitBankPlugin.Infrastructure;
@ -141,6 +144,12 @@ public class PluginNopStartup : INopStartup
options.Filters.AddService<PendingMeasurementCheckoutFilter>(); options.Filters.AddService<PendingMeasurementCheckoutFilter>();
}); });
//services.AddLogging(logging =>
//{
// logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Error);
// //logging.AddAcLogger(category => new Logger(category)); //Minden .net az aclogger-t használja.
//});
services.AddSignalR(hubOptions => services.AddSignalR(hubOptions =>
{ {
hubOptions.EnableDetailedErrors = true; hubOptions.EnableDetailedErrors = true;
@ -151,18 +160,19 @@ public class PluginNopStartup : INopStartup
//hubOptions.MaximumParallelInvocationsPerClient = 1; //default: 1; //hubOptions.MaximumParallelInvocationsPerClient = 1; //default: 1;
hubOptions.StatefulReconnectBufferSize = 30_000_000; //30MB; //default: 100,000 bytes; hubOptions.StatefulReconnectBufferSize = 30_000_000; //30MB; //default: 100,000 bytes;
//hubOptions.HandshakeTimeout = TimeSpan.FromSeconds(15); //default timeout is 15 seconds //hubOptions.HandshakeTimeout = TimeSpan.FromSeconds(15); //default timeout is 15 seconds
}); })
.AddAcBinaryProtocol(opts =>
services.AddSingleton<IHubProtocol>(sp =>
{ {
var binaryOptions = AcBinarySerializerOptions.Default; opts.ProtocolMode = BinaryProtocolMode.AsyncSegment;
binaryOptions.BufferWriterChunkSize = 4096; // Explicit AcLogger instance (name-based category, matches the previous setup).
// If omitted, the options extension falls back to ILogger<AcBinaryHubProtocol> from DI.
return new AyCodeBinaryHubProtocol(binaryOptions); opts.Logger = new Logger(nameof(AyCodeBinaryHubProtocol));
// opts.FlushTimeout = TimeSpan.FromSeconds(10); // default — ~65 KB chunks transfer in ≤9s even on GPRS
}); });
//Vagy ha az options-t is DI-ből: using var tmpSp = services.BuildServiceProvider();
//hubBuilder.Services.AddSingleton<IHubProtocol>(sp => new AyCodeBinaryHubProtocol(sp.GetRequiredService<AcBinarySerializerOptions>())); foreach (var p in tmpSp.GetServices<IHubProtocol>())
Console.WriteLine($">>> HubProtocol: Name={p.Name} v{p.Version} Assembly={p.GetType().Assembly.GetName().Name}");
} }
/// <summary> /// <summary>