diff --git a/src/JT809.DotNetty.Core/Clients/JT809MainClient.cs b/src/JT809.DotNetty.Core/Clients/JT809MainClient.cs index 86afca7..eeaa1d6 100644 --- a/src/JT809.DotNetty.Core/Clients/JT809MainClient.cs +++ b/src/JT809.DotNetty.Core/Clients/JT809MainClient.cs @@ -9,6 +9,7 @@ using JT809.DotNetty.Core.Handlers; using JT809.DotNetty.Core.Interfaces; using JT809.DotNetty.Core.Metadata; using JT809.Protocol; +using JT809.Protocol.Configs; using JT809.Protocol.Extensions; using JT809.Protocol.MessageBody; using Microsoft.Extensions.DependencyInjection; @@ -42,11 +43,15 @@ namespace JT809.DotNetty.Core.Clients private readonly IJT809ManualResetEvent manualResetEvent; + private readonly JT809HeaderOptions JT809HeaderOptions; + public JT809MainClient( + JT809HeaderOptions jT809HeaderOptions, IJT809ManualResetEvent jT809ManualResetEvent, IServiceProvider provider, ILoggerFactory loggerFactory) { + JT809HeaderOptions = jT809HeaderOptions; this.serviceProvider = provider; this.logger = loggerFactory.CreateLogger(); this.manualResetEvent = jT809ManualResetEvent; @@ -102,7 +107,11 @@ namespace JT809.DotNetty.Core.Clients //jT809_0X1001.UserId = userId; //jT809_0X1001.Password = password; var package = JT809.Protocol.Enums.JT809BusinessType.主链路登录请求消息.Create(_jT809_0x1001); - await channel.WriteAndFlushAsync(new JT809Response(package, 100)); + package.Header.MsgGNSSCENTERID = JT809HeaderOptions.MsgGNSSCENTERID; + package.Header.Version = JT809HeaderOptions.Version; + package.Header.EncryptKey = JT809HeaderOptions.EncryptKey; + package.Header.EncryptFlag = JT809HeaderOptions.EncryptFlag; + await channel.WriteAndFlushAsync(new JT809Response(package, 1024)); logger.LogInformation("等待登录应答结果..."); manualResetEvent.Pause(); } diff --git a/src/JT809.DotNetty.Core/Handlers/JT809MainClientConnectionHandler.cs b/src/JT809.DotNetty.Core/Handlers/JT809MainClientConnectionHandler.cs index a262853..56c3e06 100644 --- a/src/JT809.DotNetty.Core/Handlers/JT809MainClientConnectionHandler.cs +++ b/src/JT809.DotNetty.Core/Handlers/JT809MainClientConnectionHandler.cs @@ -78,7 +78,7 @@ namespace JT809.DotNetty.Core.Handlers logger.LogInformation($"{idleStateEvent.State.ToString()}>>>Heartbeat-{channelId}"); //发送主链路保持请求数据包 var package = JT809BusinessType.主链路连接保持请求消息.Create(); - JT809Response jT809Response = new JT809Response(package, 100); + JT809Response jT809Response = new JT809Response(package, 1024); context.WriteAndFlushAsync(jT809Response); } } diff --git a/src/JT809.DotNetty.Core/Handlers/JT809SubordinateClientConnectionHandler.cs b/src/JT809.DotNetty.Core/Handlers/JT809SubordinateClientConnectionHandler.cs index 7d4c559..ac2fddd 100644 --- a/src/JT809.DotNetty.Core/Handlers/JT809SubordinateClientConnectionHandler.cs +++ b/src/JT809.DotNetty.Core/Handlers/JT809SubordinateClientConnectionHandler.cs @@ -110,7 +110,7 @@ namespace JT809.DotNetty.Core.Handlers string channelId = context.Channel.Id.AsShortText(); //发送从链路保持请求数据包 var package = JT809BusinessType.从链路连接保持请求消息.Create(); - JT809Response jT809Response = new JT809Response(package, 100); + JT809Response jT809Response = new JT809Response(package, 1024); if (logger.IsEnabled(LogLevel.Information)) logger.LogInformation($"{idleStateEvent.State.ToString()}>>>Heartbeat-{channelId}-{JT809Serializer.Serialize(package, 100).ToHexString()}"); context.WriteAndFlushAsync(jT809Response); diff --git a/src/JT809.DotNetty.Core/Handlers/JT809SuperiorMsgIdReceiveHandlerBase.cs b/src/JT809.DotNetty.Core/Handlers/JT809SuperiorMsgIdReceiveHandlerBase.cs index 090ef35..ce8708e 100644 --- a/src/JT809.DotNetty.Core/Handlers/JT809SuperiorMsgIdReceiveHandlerBase.cs +++ b/src/JT809.DotNetty.Core/Handlers/JT809SuperiorMsgIdReceiveHandlerBase.cs @@ -40,7 +40,7 @@ namespace JT809.DotNetty.Core.Handlers {JT809BusinessType.主链路断开通知消息.ToUInt16Value(),Msg0x1007 }, {JT809BusinessType.主链路车辆动态信息交换业务.ToUInt16Value(), Msg0x1200}, {JT809BusinessType.下级平台主动关闭主从链路通知消息.ToUInt16Value(), Msg0x1008}, - {JT809BusinessType.从链路连接保持应答消息.ToUInt16Value(), Msg0x9002}, + {JT809BusinessType.从链路连接应答信息.ToUInt16Value(), Msg0x9002}, {JT809BusinessType.从链路注销应答消息.ToUInt16Value(), Msg0x9004}, {JT809BusinessType.从链路连接保持应答消息.ToUInt16Value(), Msg0x9006}, }; diff --git a/src/JT809.DotNetty.Core/Internal/JT809SubordinateLinkNotifyImplService.cs b/src/JT809.DotNetty.Core/Internal/JT809SubordinateLinkNotifyImplService.cs index 1f16051..c78f172 100644 --- a/src/JT809.DotNetty.Core/Internal/JT809SubordinateLinkNotifyImplService.cs +++ b/src/JT809.DotNetty.Core/Internal/JT809SubordinateLinkNotifyImplService.cs @@ -55,6 +55,10 @@ namespace JT809.DotNetty.Core.Internal { ReasonCode = reasonCode }); + package.Header.MsgGNSSCENTERID = msgGNSSCENTERID; + package.Header.Version = JT809HeaderOptions.Version; + package.Header.EncryptKey = JT809HeaderOptions.EncryptKey; + package.Header.EncryptFlag = JT809HeaderOptions.EncryptFlag; JT809Response jT809Response = new JT809Response(package, 100); if (logger.IsEnabled(LogLevel.Information)) logger.LogInformation($"从链路断开通知消息>>>{JT809Serializer.Serialize(package, 100).ToHexString()}"); diff --git a/src/JT809.DotNetty.Core/JT809CoreDotnettyExtensions.cs b/src/JT809.DotNetty.Core/JT809CoreDotnettyExtensions.cs index 455f8a0..946107e 100644 --- a/src/JT809.DotNetty.Core/JT809CoreDotnettyExtensions.cs +++ b/src/JT809.DotNetty.Core/JT809CoreDotnettyExtensions.cs @@ -20,6 +20,7 @@ using Microsoft.Extensions.Options; using JT808.DotNetty.WebApi; using JT809.DotNetty.Core.Session; using JT809.DotNetty.Core.Events; +using JT809.Protocol; [assembly: InternalsVisibleTo("JT809.DotNetty.Core.Test")] @@ -44,7 +45,7 @@ namespace JT809.DotNetty.Core }); } - public static IServiceCollection AddJT809Core(this IServiceCollection serviceDescriptors,IConfiguration configuration, Newtonsoft.Json.JsonSerializerSettings settings = null) + public static IJT809Builder AddJT809Core(this IJT809Builder builder,IConfiguration configuration, Newtonsoft.Json.JsonSerializerSettings settings = null) { if (settings != null) { @@ -56,14 +57,14 @@ namespace JT809.DotNetty.Core return settings; }); } - serviceDescriptors.Configure(configuration.GetSection("JT809Configuration")); - serviceDescriptors.TryAddSingleton(); + builder.Services.Configure(configuration.GetSection("JT809Configuration")); + builder.Services.TryAddSingleton(); //JT809计数器服务工厂 - serviceDescriptors.TryAddSingleton(); + builder.Services.TryAddSingleton(); //JT809编解码器 - serviceDescriptors.TryAddScoped(); - serviceDescriptors.TryAddScoped(); - return serviceDescriptors; + builder.Services.TryAddScoped(); + builder.Services.TryAddScoped(); + return builder; } /// @@ -73,23 +74,23 @@ namespace JT809.DotNetty.Core /// /// /// - public static IServiceCollection AddJT809InferiorPlatform(this IServiceCollection serviceDescriptors, Action options) + public static IJT809Builder AddJT809InferiorPlatform(this IJT809Builder builder, Action options) { - serviceDescriptors.Configure(options); + builder.Services.Configure(options); //主从链路客户端和服务端连接处理器 - serviceDescriptors.TryAddScoped(); - serviceDescriptors.TryAddScoped(); + builder.Services.TryAddScoped(); + builder.Services.TryAddScoped(); //主链路服务端会话管理 //serviceDescriptors.TryAddSingleton(); //主从链路接收消息默认业务处理器 - serviceDescriptors.TryAddSingleton(); + builder.Services.TryAddSingleton(); //主从链路消息接收处理器 - serviceDescriptors.TryAddScoped(); + builder.Services.TryAddScoped(); //主链路客户端 //serviceDescriptors.TryAddSingleton(); //从链路服务端 - serviceDescriptors.AddHostedService(); - return serviceDescriptors; + builder.Services.AddHostedService(); + return builder; } /// @@ -99,18 +100,18 @@ namespace JT809.DotNetty.Core /// /// /// - public static IServiceCollection AddJT809InferiorPlatformClient(this IServiceCollection serviceDescriptors) + public static IJT809Builder AddJT809InferiorPlatformClient(this IJT809Builder builder) { - serviceDescriptors.TryAddSingleton(); + builder.Services.TryAddSingleton(); //主从链路客户端和服务端连接处理器 - serviceDescriptors.TryAddScoped(); + builder.Services.TryAddScoped(); //主从链路接收消息默认业务处理器 - serviceDescriptors.TryAddSingleton(); + builder.Services.TryAddSingleton(); //主从链路消息接收处理器 - serviceDescriptors.TryAddScoped(); + builder.Services.TryAddScoped(); //主链路客户端 - serviceDescriptors.TryAddSingleton(); - return serviceDescriptors; + builder.Services.TryAddSingleton(); + return builder; } @@ -121,38 +122,38 @@ namespace JT809.DotNetty.Core /// /// /// - public static IServiceCollection AddJT809SuperiorPlatform(this IServiceCollection serviceDescriptors, IConfiguration superiorPlatformConfiguration=null, Action options=null) + public static IJT809Builder AddJT809SuperiorPlatform(this IJT809Builder builder, IConfiguration superiorPlatformConfiguration=null, Action options=null) { if (superiorPlatformConfiguration != null) { - serviceDescriptors.Configure(superiorPlatformConfiguration.GetSection("JT809SuperiorPlatformConfiguration")); + builder.Services.Configure(superiorPlatformConfiguration.GetSection("JT809SuperiorPlatformConfiguration")); } if (options != null) { - serviceDescriptors.Configure(options); + builder.Services.Configure(options); } - serviceDescriptors.TryAddSingleton(); + builder.Services.TryAddSingleton(); //主从链路客户端和服务端连接处理器 - serviceDescriptors.TryAddScoped(); - serviceDescriptors.TryAddScoped(); + builder.Services.TryAddScoped(); + builder.Services.TryAddScoped(); //主链路服务端会话管理 - serviceDescriptors.TryAddSingleton(); + builder.Services.TryAddSingleton(); //主从链路接收消息默认业务处理器 - serviceDescriptors.TryAddSingleton(); + builder.Services.TryAddSingleton(); //主从链路消息接收处理器 - serviceDescriptors.TryAddScoped(); - serviceDescriptors.TryAddScoped(); - serviceDescriptors.TryAddSingleton(); - serviceDescriptors.TryAddSingleton(); + builder.Services.TryAddScoped(); + builder.Services.TryAddScoped(); + builder.Services.TryAddSingleton(); + builder.Services.TryAddSingleton(); //从链路客户端 - serviceDescriptors.TryAddSingleton(); + builder.Services.TryAddSingleton(); //主链路服务端 - serviceDescriptors.AddHostedService(); + builder.Services.AddHostedService(); //上级平台webapi - serviceDescriptors.TryAddSingleton(); - serviceDescriptors.TryAddScoped(); - serviceDescriptors.AddHostedService(); - return serviceDescriptors; + builder.Services.TryAddSingleton(); + builder.Services.TryAddScoped(); + builder.Services.AddHostedService(); + return builder; } } } \ No newline at end of file diff --git a/src/JT809.DotNetty.Simples/Inferior/JT809.Inferior.Client/JT809InferiorService.cs b/src/JT809.DotNetty.Simples/Inferior/JT809.Inferior.Client/JT809InferiorService.cs index 86f5423..777bf22 100644 --- a/src/JT809.DotNetty.Simples/Inferior/JT809.Inferior.Client/JT809InferiorService.cs +++ b/src/JT809.DotNetty.Simples/Inferior/JT809.Inferior.Client/JT809InferiorService.cs @@ -12,6 +12,7 @@ using JT809.Protocol.SubMessageBody; using JT809.Protocol.Metadata; using JT809.Protocol.MessageBody; using JT809.Protocol.Enums; +using JT809.Protocol.Configs; namespace JT809.Inferior.Client { @@ -19,10 +20,13 @@ namespace JT809.Inferior.Client { private readonly JT809MainClient mainClient; private readonly ILogger logger; + private readonly JT809HeaderOptions JT809HeaderOptions; public JT809InferiorService( + JT809HeaderOptions jT809HeaderOptions, ILoggerFactory loggerFactory, JT809MainClient mainClient) { + JT809HeaderOptions = jT809HeaderOptions; this.mainClient = mainClient; logger = loggerFactory.CreateLogger(); } @@ -68,7 +72,11 @@ namespace JT809.Inferior.Client } }; var package = JT809.Protocol.Enums.JT809BusinessType.主链路车辆动态信息交换业务.Create(jT809_0X1200); - mainClient.SendAsync(new JT809Response(package, 256)); + package.Header.MsgGNSSCENTERID = JT809HeaderOptions.MsgGNSSCENTERID; + package.Header.Version = JT809HeaderOptions.Version; + package.Header.EncryptKey = JT809HeaderOptions.EncryptKey; + package.Header.EncryptFlag = JT809HeaderOptions.EncryptFlag; + mainClient.SendAsync(new JT809Response(package, 1024)); logger.LogDebug($"Thread:{Thread.CurrentThread.ManagedThreadId}-2s"); Thread.Sleep(2000); } @@ -103,7 +111,11 @@ namespace JT809.Inferior.Client } }; var package = JT809BusinessType.主链路车辆动态信息交换业务.Create(jT809_0X1200); - mainClient.SendAsync(new JT809Response(package, 256)); + package.Header.MsgGNSSCENTERID = JT809HeaderOptions.MsgGNSSCENTERID; + package.Header.Version = JT809HeaderOptions.Version; + package.Header.EncryptKey = JT809HeaderOptions.EncryptKey; + package.Header.EncryptFlag = JT809HeaderOptions.EncryptFlag; + mainClient.SendAsync(new JT809Response(package, 1024)); logger.LogDebug($"Thread:{Thread.CurrentThread.ManagedThreadId}-4s"); Thread.Sleep(4000); } diff --git a/src/JT809.DotNetty.Simples/Inferior/JT809.Inferior.Client/Program.cs b/src/JT809.DotNetty.Simples/Inferior/JT809.Inferior.Client/Program.cs index 92861f1..ba01597 100644 --- a/src/JT809.DotNetty.Simples/Inferior/JT809.Inferior.Client/Program.cs +++ b/src/JT809.DotNetty.Simples/Inferior/JT809.Inferior.Client/Program.cs @@ -1,6 +1,7 @@ using JT809.DotNetty.Core; using JT809.DotNetty.Core.Handlers; using JT809.Protocol; +using JT809.Protocol.Configs; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; @@ -30,8 +31,14 @@ namespace JT809.Inferior.Client { services.AddSingleton(); services.AddSingleton(typeof(ILogger<>), typeof(Logger<>)); - services.AddJT809Configure(); - services.AddJT809Core(hostContext.Configuration) + services.AddSingleton(new JT809HeaderOptions + { + MsgGNSSCENTERID = 20141013, + Version = new JT809Header_Version(1, 0, 0), + EncryptKey = 9595 + }); + services.AddJT809Configure() + .AddJT809Core(hostContext.Configuration) .AddJT809InferiorPlatformClient(); services.AddHostedService(); }); diff --git a/src/JT809.DotNetty.Simples/Inferior/JT809.Inferior.Server/Program.cs b/src/JT809.DotNetty.Simples/Inferior/JT809.Inferior.Server/Program.cs index 6b6d53c..738730c 100644 --- a/src/JT809.DotNetty.Simples/Inferior/JT809.Inferior.Server/Program.cs +++ b/src/JT809.DotNetty.Simples/Inferior/JT809.Inferior.Server/Program.cs @@ -1,5 +1,7 @@ using JT809.DotNetty.Core; using JT809.DotNetty.Core.Handlers; +using JT809.Protocol; +using JT809.Protocol.Configs; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; @@ -7,8 +9,6 @@ using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using System; using System.Threading.Tasks; -using JT809.Protocol.Extensions.DependencyInjection; -using JT809.Protocol.Extensions.DependencyInjection.Options; namespace JT809.Inferior.Server { @@ -37,14 +37,14 @@ namespace JT809.Inferior.Server { services.AddSingleton(); services.AddSingleton(typeof(ILogger<>), typeof(Logger<>)); - services.AddJT809Configure(new JT809Options + services.AddSingleton(new JT809HeaderOptions { - HeaderOptions=new Protocol.Configs.JT809HeaderOptions - { - MsgGNSSCENTERID=100210 - } + MsgGNSSCENTERID = 20141013, + Version = new JT809Header_Version(1, 0, 0), + EncryptKey = 9595 }); - services.AddJT809Core(hostContext.Configuration) + services.AddJT809Configure() + .AddJT809Core(hostContext.Configuration) .AddJT809InferiorPlatform(options: options => { options.TcpPort = 809; }); diff --git a/src/JT809.DotNetty.Simples/Superior/JT809.Superior.Server/JT809.Superior.Server.csproj b/src/JT809.DotNetty.Simples/Superior/JT809.Superior.Server/JT809.Superior.Server.csproj index 07ac93a..8c678f8 100644 --- a/src/JT809.DotNetty.Simples/Superior/JT809.Superior.Server/JT809.Superior.Server.csproj +++ b/src/JT809.DotNetty.Simples/Superior/JT809.Superior.Server/JT809.Superior.Server.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp2.2 + netcoreapp3.1 diff --git a/src/JT809.DotNetty.Simples/Superior/JT809.Superior.Server/Program.cs b/src/JT809.DotNetty.Simples/Superior/JT809.Superior.Server/Program.cs index 32d0dec..d699620 100644 --- a/src/JT809.DotNetty.Simples/Superior/JT809.Superior.Server/Program.cs +++ b/src/JT809.DotNetty.Simples/Superior/JT809.Superior.Server/Program.cs @@ -11,6 +11,7 @@ using Microsoft.Extensions.Logging; using System; using System.Threading.Tasks; using JT809.KafkaService; +using JT809.Protocol; namespace JT809.Superior.Server { @@ -35,9 +36,16 @@ namespace JT809.Superior.Server { services.AddSingleton(); services.AddSingleton(typeof(ILogger<>), typeof(Logger<>)); - services.AddJT809Core(hostContext.Configuration) + services.AddSingleton(new JT809HeaderOptions + { + MsgGNSSCENTERID = 20141013, + Version = new JT809Header_Version(1, 0, 0), + EncryptKey = 9595 + }); + services.AddJT809Configure() + .AddJT809Core(hostContext.Configuration) .AddJT809SuperiorPlatform(options:options => { - options.TcpPort = 808; + options.TcpPort = 809; }); services.Configure(hostContext.Configuration.GetSection("JT809GpsOptions")); services.AddJT809KafkaProducerService(hostContext.Configuration); diff --git a/src/JT809.DotNetty.Simples/Superior/JT809.Superior.Server/appsettings.json b/src/JT809.DotNetty.Simples/Superior/JT809.Superior.Server/appsettings.json index b548f32..9d2d070 100644 --- a/src/JT809.DotNetty.Simples/Superior/JT809.Superior.Server/appsettings.json +++ b/src/JT809.DotNetty.Simples/Superior/JT809.Superior.Server/appsettings.json @@ -15,7 +15,8 @@ "JT809Configuration": { "SubordinateClientEnable": false }, - "KafkaProducerConfig": { + "JT809ProducerConfig": { + "TopicName": "jt809", "BootstrapServers": "127.0.0.1:9092" }, "JT809GpsOptions": { diff --git a/src/JT809.DotNetty.Tests/JT809.DotNetty.Host.Test/Program.cs b/src/JT809.DotNetty.Tests/JT809.DotNetty.Host.Test/Program.cs index 514a0d6..8f96d50 100644 --- a/src/JT809.DotNetty.Tests/JT809.DotNetty.Host.Test/Program.cs +++ b/src/JT809.DotNetty.Tests/JT809.DotNetty.Host.Test/Program.cs @@ -43,7 +43,8 @@ namespace JT809.DotNetty.Host.Test Version = new JT809Header_Version(1, 0, 0), EncryptKey = 9595 }); - services.AddJT809Core(hostContext.Configuration) + services.AddJT809Configure() + .AddJT809Core(hostContext.Configuration) .AddJT809SuperiorPlatform(options:options=> { options.TcpPort = 839; });