From 017e5d1c7bd0a79b4b1253a7d1c89f95c6ad0782 Mon Sep 17 00:00:00 2001
From: "SmallChi(Koike)" <564952747@qq.com>
Date: Thu, 3 Sep 2020 18:21:39 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E9=80=9A=E7=94=A8=E7=9A=84?=
=?UTF-8?q?=E6=B6=88=E6=81=AF=E5=A4=84=E7=90=86=E7=A8=8B=E5=BA=8F=EF=BC=88?=
=?UTF-8?q?=E5=BE=85=E5=AE=8C=E5=96=84=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Dtos/JT808UnificationSendRequestDto.cs | 2 +-
.../Extensions/JT808SessionExtensions.cs | 13 +
.../JT808.Gateway.Abstractions.csproj | 7 +
.../JT808MessageHandler.cs | 333 ++++++++++++++++++
.../JT808NormalReplyMessageHandler.cs | 1 -
.../JT808.Gateway.ServerBenchmark/Program.cs | 2 +-
.../JT808ServerKafkaExtensions.cs | 6 +-
.../JT808MsgLoggingExtensions.cs | 2 +-
.../JT808ReplyMessageExtensions.cs | 48 +--
.../JT808ReplyMessageHostedService.cs | 46 +--
.../JT808SessionNoticeExtensions.cs | 4 +-
.../JT808TrafficServiceExtensions.cs | 4 +-
.../JT808TransmitExtensions.cs | 2 +-
.../JT808.Gateway.NormalHosting.csproj | 1 +
.../JT808.Gateway.NormalHosting/Program.cs | 2 +-
.../JT808.Gateway.QueueHosting/Program.cs | 5 +-
.../JT808.Gateway.Test/JT808HttpClientTest.cs | 41 ++-
.../JT808.Gateway.WebApiClientTool.csproj | 4 +-
.../JT808.Gateway.WebApiClientTool.xml | 69 +++-
.../JT808HttpClient.cs | 79 ++++-
.../JT808HttpClientExtensions.cs | 16 +
src/JT808.Gateway.sln | 14 +-
.../JT808MsgIdDefaultWebApiHandler.cs | 2 +-
src/JT808.Gateway/JT808.Gateway.csproj | 4 +
src/JT808.Gateway/JT808GatewayExtensions.cs | 85 +++--
src/JT808.Gateway/JT808TcpServer.cs | 54 +--
src/JT808.Gateway/JT808UdpServer.cs | 41 +--
27 files changed, 675 insertions(+), 212 deletions(-)
create mode 100644 src/JT808.Gateway.Abstractions/JT808MessageHandler.cs
diff --git a/src/JT808.Gateway.Abstractions/Dtos/JT808UnificationSendRequestDto.cs b/src/JT808.Gateway.Abstractions/Dtos/JT808UnificationSendRequestDto.cs
index 065234b..6ccd8b0 100644
--- a/src/JT808.Gateway.Abstractions/Dtos/JT808UnificationSendRequestDto.cs
+++ b/src/JT808.Gateway.Abstractions/Dtos/JT808UnificationSendRequestDto.cs
@@ -6,6 +6,6 @@
public class JT808UnificationSendRequestDto
{
public string TerminalPhoneNo { get; set; }
- public string Data { get; set; }
+ public string HexData { get; set; }
}
}
diff --git a/src/JT808.Gateway.Abstractions/Extensions/JT808SessionExtensions.cs b/src/JT808.Gateway.Abstractions/Extensions/JT808SessionExtensions.cs
index 65eecf0..5b7bfd4 100644
--- a/src/JT808.Gateway.Abstractions/Extensions/JT808SessionExtensions.cs
+++ b/src/JT808.Gateway.Abstractions/Extensions/JT808SessionExtensions.cs
@@ -3,6 +3,7 @@ using System;
using System.Collections.Generic;
using System.Net.Sockets;
using System.Text;
+using System.Threading.Tasks;
namespace JT808.Gateway.Abstractions
{
@@ -19,5 +20,17 @@ namespace JT808.Gateway.Abstractions
await session.Client.SendToAsync(data, SocketFlags.None, session.RemoteEndPoint);
}
}
+
+ public static void Send(this IJT808Session session, byte[] data)
+ {
+ if (session.TransportProtocolType == JT808TransportProtocolType.tcp)
+ {
+ session.Client.Send(data, SocketFlags.None);
+ }
+ else
+ {
+ session.Client.SendTo(data, SocketFlags.None, session.RemoteEndPoint);
+ }
+ }
}
}
diff --git a/src/JT808.Gateway.Abstractions/JT808.Gateway.Abstractions.csproj b/src/JT808.Gateway.Abstractions/JT808.Gateway.Abstractions.csproj
index 269968f..b356590 100644
--- a/src/JT808.Gateway.Abstractions/JT808.Gateway.Abstractions.csproj
+++ b/src/JT808.Gateway.Abstractions/JT808.Gateway.Abstractions.csproj
@@ -25,6 +25,13 @@
JT808.Gateway.Abstractions.xml
+
+
+
+
+
+
+
diff --git a/src/JT808.Gateway.Abstractions/JT808MessageHandler.cs b/src/JT808.Gateway.Abstractions/JT808MessageHandler.cs
new file mode 100644
index 0000000..1421a0e
--- /dev/null
+++ b/src/JT808.Gateway.Abstractions/JT808MessageHandler.cs
@@ -0,0 +1,333 @@
+using JT808.Protocol;
+using JT808.Protocol.Enums;
+using JT808.Protocol.Extensions;
+using JT808.Protocol.MessageBody;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT808.Gateway.Abstractions
+{
+ ///
+ /// 通用消息处理程序
+ ///
+ public class JT808MessageHandler
+ {
+ protected Dictionary HandlerDict { get; }
+
+ protected delegate byte[] MsgIdMethodDelegate(JT808HeaderPackage package, IJT808Session session);
+ protected JT808Serializer JT808Serializer { get; }
+ public JT808MessageHandler(IJT808Config jT808Config)
+ {
+ this.JT808Serializer = jT808Config.GetSerializer();
+ HandlerDict = new Dictionary {
+ {JT808MsgId.终端通用应答.ToUInt16Value(), Msg0x0001},
+ {JT808MsgId.终端鉴权.ToUInt16Value(), Msg0x0102},
+ {JT808MsgId.终端心跳.ToUInt16Value(), Msg0x0002},
+ {JT808MsgId.终端注销.ToUInt16Value(), Msg0x0003},
+ {JT808MsgId.终端注册.ToUInt16Value(), Msg0x0100},
+ {JT808MsgId.位置信息汇报.ToUInt16Value(),Msg0x0200 },
+ {JT808MsgId.定位数据批量上传.ToUInt16Value(),Msg0x0704 },
+ {JT808MsgId.数据上行透传.ToUInt16Value(),Msg0x0900 },
+ {JT808MsgId.查询服务器时间请求.ToUInt16Value(),Msg0x0004 },
+ {JT808MsgId.查询终端参数应答.ToUInt16Value(),Msg0x0104 },
+ {JT808MsgId.查询终端属性应答.ToUInt16Value(),Msg0x0107 },
+ {JT808MsgId.终端升级结果通知.ToUInt16Value(),Msg0x0108 },
+ {JT808MsgId.位置信息查询应答.ToUInt16Value(),Msg0x0201 },
+ {JT808MsgId.链路检测.ToUInt16Value(),Msg0x8204 },
+ {JT808MsgId.车辆控制应答.ToUInt16Value(),Msg0x0500 },
+ {JT808MsgId.摄像头立即拍摄命令.ToUInt16Value(),Msg0x8801 },
+ {JT808MsgId.多媒体数据上传.ToUInt16Value(),Msg0x0801 },
+ {JT808MsgId.多媒体事件信息上传.ToUInt16Value(),Msg0x0800 },
+ {JT808MsgId.CAN总线数据上传.ToUInt16Value(),Msg0x0705 },
+ };
+ }
+ ///
+ /// 消息处理
+ ///
+ /// 请求数据
+ /// 当前会话
+ /// 应答消息数据
+ public virtual byte[] Processor(JT808HeaderPackage request, IJT808Session session)
+ {
+ if (HandlerDict.TryGetValue(request.Header.MsgId, out var func))
+ {
+ return func(request, session);
+ }
+ return default;
+ //else
+ //{
+ // //处理不了的消息统一回复通用应答
+ // return CommonReply(request, session);
+ //}
+ }
+ ///
+ /// 终端通用应答
+ /// 平台无需回复
+ /// 实现自己的业务
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0001(JT808HeaderPackage request, IJT808Session session)
+ {
+ return default;
+ }
+ ///
+ /// 平台通用应答
+ ///
+ ///
+ ///
+ public virtual byte[] CommonReply(JT808HeaderPackage request, IJT808Session session)
+ {
+ if (request.Version == JT808Version.JTT2019)
+ {
+ byte[] data = JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create_平台通用应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8001()
+ {
+ AckMsgId = request.Header.MsgId,
+ JT808PlatformResult = JT808PlatformResult.成功,
+ MsgNum = request.Header.MsgNum
+ }));
+ session.Send(data);
+ return data;
+ }
+ else
+ {
+ byte[] data = JT808Serializer.Serialize(JT808MsgId.平台通用应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8001()
+ {
+ AckMsgId = request.Header.MsgId,
+ JT808PlatformResult = JT808PlatformResult.成功,
+ MsgNum = request.Header.MsgNum
+ }));
+ session.Send(data);
+ return data;
+ }
+ }
+ ///
+ /// 终端心跳
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0002(JT808HeaderPackage request, IJT808Session session)
+ {
+ return CommonReply(request, session);
+ }
+ ///
+ /// 查询服务器时间
+ /// 2019版本
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0004(JT808HeaderPackage request, IJT808Session session)
+ {
+ byte[] data = JT808Serializer.Serialize(JT808MsgId.查询服务器时间应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8004()
+ {
+ Time=DateTime.Now
+ }));
+ session.Send(data);
+ return data;
+ }
+ ///
+ /// 服务器补传分包请求
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x8003(JT808HeaderPackage request, IJT808Session session)
+ {
+ throw new NotImplementedException("0x8003-服务器补传分包请求");
+ }
+ ///
+ /// 终端补传分包请求
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0005(JT808HeaderPackage request, IJT808Session session)
+ {
+ throw new NotImplementedException("0x0005-终端补传分包请求");
+ }
+ ///
+ /// 终端注册
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0100(JT808HeaderPackage request, IJT808Session session)
+ {
+ if (request.Version == JT808Version.JTT2019)
+ {
+ byte[] data = JT808Serializer.Serialize(JT808MsgId.终端注册应答.Create_终端注册应答_2019(request.Header.TerminalPhoneNo, new JT808_0x8100()
+ {
+ Code = "J" + request.Header.TerminalPhoneNo,
+ JT808TerminalRegisterResult = JT808TerminalRegisterResult.成功,
+ AckMsgNum = request.Header.MsgNum
+ }));
+ session.Send(data);
+ return data;
+ }
+ else
+ {
+ byte[] data = JT808Serializer.Serialize(JT808MsgId.终端注册应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8100()
+ {
+ Code = "J" + request.Header.TerminalPhoneNo,
+ JT808TerminalRegisterResult = JT808TerminalRegisterResult.成功,
+ AckMsgNum = request.Header.MsgNum
+ }));
+ session.Send(data);
+ return data;
+ }
+ }
+ ///
+ /// 终端注销
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0003(JT808HeaderPackage request, IJT808Session session)
+ {
+ return CommonReply(request, session);
+ }
+ ///
+ /// 终端鉴权
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0102(JT808HeaderPackage request, IJT808Session session)
+ {
+ return CommonReply(request, session);
+ }
+ ///
+ /// 查询终端参数应答
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0104(JT808HeaderPackage request, IJT808Session session)
+ {
+ return CommonReply(request, session);
+ }
+ ///
+ /// 查询终端属性应答
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0107(JT808HeaderPackage request, IJT808Session session)
+ {
+ return CommonReply(request, session);
+ }
+ ///
+ /// 终端升级结果应答
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0108(JT808HeaderPackage request, IJT808Session session)
+ {
+ return CommonReply(request, session);
+ }
+ ///
+ /// 位置信息汇报
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0200(JT808HeaderPackage request, IJT808Session session)
+ {
+ return CommonReply(request, session);
+ }
+ ///
+ /// 位置信息查询应答
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0201(JT808HeaderPackage request, IJT808Session session)
+ {
+ return CommonReply(request, session);
+ }
+ ///
+ /// 链路检测
+ /// 2019版本
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x8204(JT808HeaderPackage request, IJT808Session session)
+ {
+ return default;
+ }
+ ///
+ /// 车辆控制应答
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0500(JT808HeaderPackage request, IJT808Session session)
+ {
+ return CommonReply(request, session);
+ }
+ ///
+ /// 定位数据批量上传
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0704(JT808HeaderPackage request, IJT808Session session)
+ {
+ return CommonReply(request, session);
+ }
+ ///
+ /// CAN总线数据上传
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0705(JT808HeaderPackage request, IJT808Session session)
+ {
+ return CommonReply(request, session);
+ }
+ ///
+ /// 多媒体事件信息上传
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0800(JT808HeaderPackage request, IJT808Session session)
+ {
+ return CommonReply(request, session);
+ }
+ ///
+ /// 多媒体数据上传
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0801(JT808HeaderPackage request, IJT808Session session)
+ {
+ throw new NotImplementedException("0x8800多媒体数据上传应答");
+ }
+ ///
+ /// 摄像头立即拍摄命令
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x8801(JT808HeaderPackage request, IJT808Session session)
+ {
+ throw new NotImplementedException("0x0805摄像头立即拍摄命令应答");
+ }
+ ///
+ /// 数据上行透传
+ ///
+ ///
+ ///
+ ///
+ public virtual byte[] Msg0x0900(JT808HeaderPackage request, IJT808Session session)
+ {
+ return CommonReply(request, session);
+ }
+ }
+}
diff --git a/src/JT808.Gateway.Abstractions/JT808NormalReplyMessageHandler.cs b/src/JT808.Gateway.Abstractions/JT808NormalReplyMessageHandler.cs
index de6d280..fbdfa71 100644
--- a/src/JT808.Gateway.Abstractions/JT808NormalReplyMessageHandler.cs
+++ b/src/JT808.Gateway.Abstractions/JT808NormalReplyMessageHandler.cs
@@ -59,7 +59,6 @@ namespace JT808.Gateway.Abstractions
return CommonReply(request, session);
}
}
-
///
/// 终端通用应答
/// 平台无需回复
diff --git a/src/JT808.Gateway.Benchmark/JT808.Gateway.ServerBenchmark/Program.cs b/src/JT808.Gateway.Benchmark/JT808.Gateway.ServerBenchmark/Program.cs
index fb0a1d2..ea66a2f 100644
--- a/src/JT808.Gateway.Benchmark/JT808.Gateway.ServerBenchmark/Program.cs
+++ b/src/JT808.Gateway.Benchmark/JT808.Gateway.ServerBenchmark/Program.cs
@@ -32,7 +32,7 @@ namespace JT808.Gateway.ServerBenchmark
services.AddSingleton();
services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));
services.AddJT808Configure()
- .AddNormalGateway(hostContext.Configuration)
+ .AddGateway(hostContext.Configuration)
.AddTcp()
.AddUdp();
});
diff --git a/src/JT808.Gateway.Kafka/JT808ServerKafkaExtensions.cs b/src/JT808.Gateway.Kafka/JT808ServerKafkaExtensions.cs
index d58ba2a..3d9d9b0 100644
--- a/src/JT808.Gateway.Kafka/JT808ServerKafkaExtensions.cs
+++ b/src/JT808.Gateway.Kafka/JT808ServerKafkaExtensions.cs
@@ -14,7 +14,7 @@ namespace JT808.Gateway.Kafka
///
/// GetSection("JT808MsgProducerConfig")
///
- public static IJT808QueueGatewayBuilder AddServerKafkaMsgProducer(this IJT808QueueGatewayBuilder jT808GatewayBuilder, IConfiguration configuration)
+ public static IJT808GatewayBuilder AddServerKafkaMsgProducer(this IJT808GatewayBuilder jT808GatewayBuilder, IConfiguration configuration)
{
jT808GatewayBuilder.JT808Builder.Services.Configure(configuration.GetSection("JT808MsgProducerConfig"));
jT808GatewayBuilder.JT808Builder.Services.Replace(new ServiceDescriptor(typeof(IJT808MsgProducer), typeof(JT808MsgProducer), ServiceLifetime.Singleton));
@@ -26,7 +26,7 @@ namespace JT808.Gateway.Kafka
///
/// GetSection("JT808MsgReplyConsumerConfig")
///
- public static IJT808QueueGatewayBuilder AddServerKafkaMsgReplyConsumer(this IJT808QueueGatewayBuilder jT808GatewayBuilder, IConfiguration configuration)
+ public static IJT808GatewayBuilder AddServerKafkaMsgReplyConsumer(this IJT808GatewayBuilder jT808GatewayBuilder, IConfiguration configuration)
{
jT808GatewayBuilder.JT808Builder.Services.Configure(configuration.GetSection("JT808MsgReplyConsumerConfig"));
jT808GatewayBuilder.JT808Builder.Services.Replace(new ServiceDescriptor(typeof(IJT808MsgReplyConsumer), typeof(JT808MsgReplyConsumer), ServiceLifetime.Singleton));
@@ -38,7 +38,7 @@ namespace JT808.Gateway.Kafka
///
/// GetSection("JT808SessionProducerConfig")
///
- public static IJT808QueueGatewayBuilder AddServerKafkaSessionProducer(this IJT808QueueGatewayBuilder jT808GatewayBuilder, IConfiguration configuration)
+ public static IJT808GatewayBuilder AddServerKafkaSessionProducer(this IJT808GatewayBuilder jT808GatewayBuilder, IConfiguration configuration)
{
jT808GatewayBuilder.JT808Builder.Services.Configure(configuration.GetSection("JT808SessionProducerConfig"));
jT808GatewayBuilder.JT808Builder.Services.Replace(new ServiceDescriptor(typeof(IJT808SessionProducer), typeof(JT808SessionProducer), ServiceLifetime.Singleton));
diff --git a/src/JT808.Gateway.Services/JT808.Gateway.MsgLogging/JT808MsgLoggingExtensions.cs b/src/JT808.Gateway.Services/JT808.Gateway.MsgLogging/JT808MsgLoggingExtensions.cs
index 19e38fd..6b16d52 100644
--- a/src/JT808.Gateway.Services/JT808.Gateway.MsgLogging/JT808MsgLoggingExtensions.cs
+++ b/src/JT808.Gateway.Services/JT808.Gateway.MsgLogging/JT808MsgLoggingExtensions.cs
@@ -17,7 +17,7 @@ namespace JT808.Gateway.MsgLogging
return jT808ClientBuilder;
}
- public static IJT808NormalGatewayBuilder AddMsgLogging(this IJT808NormalGatewayBuilder jT808NormalGatewayBuilder)
+ public static IJT808GatewayBuilder AddMsgLogging(this IJT808GatewayBuilder jT808NormalGatewayBuilder)
where TJT808MsgLogging : IJT808MsgLogging
{
jT808NormalGatewayBuilder.JT808Builder.Services.AddSingleton(typeof(IJT808MsgLogging), typeof(TJT808MsgLogging));
diff --git a/src/JT808.Gateway.Services/JT808.Gateway.ReplyMessage/JT808ReplyMessageExtensions.cs b/src/JT808.Gateway.Services/JT808.Gateway.ReplyMessage/JT808ReplyMessageExtensions.cs
index 28084fb..77b6f16 100644
--- a/src/JT808.Gateway.Services/JT808.Gateway.ReplyMessage/JT808ReplyMessageExtensions.cs
+++ b/src/JT808.Gateway.Services/JT808.Gateway.ReplyMessage/JT808ReplyMessageExtensions.cs
@@ -9,29 +9,29 @@ namespace JT808.Gateway.ReplyMessage
{
public static class JT808ReplyMessageExtensions
{
- ///
- /// 消息应答服务(不同的消费者实例)
- ///
- ///
- ///
- public static IJT808ClientBuilder AddReplyMessage(this IJT808ClientBuilder jT808ClientBuilder)
- {
- jT808ClientBuilder.JT808Builder.Services.AddSingleton();
- jT808ClientBuilder.JT808Builder.Services.AddHostedService();
- return jT808ClientBuilder;
- }
- ///
- /// 消息应答服务(不同的消费者实例)
- ///
- /// 自定义消息回复服务
- ///
- ///
- public static IJT808ClientBuilder AddReplyMessage(this IJT808ClientBuilder jT808ClientBuilder)
- where TReplyMessageHandler : JT808QueueReplyMessageHandler
- {
- jT808ClientBuilder.JT808Builder.Services.AddSingleton();
- jT808ClientBuilder.JT808Builder.Services.AddHostedService();
- return jT808ClientBuilder;
- }
+ /////
+ ///// 消息应答服务(不同的消费者实例)
+ /////
+ /////
+ /////
+ //public static IJT808ClientBuilder AddReplyMessage(this IJT808ClientBuilder jT808ClientBuilder)
+ //{
+ // jT808ClientBuilder.JT808Builder.Services.AddSingleton();
+ // jT808ClientBuilder.JT808Builder.Services.AddHostedService();
+ // return jT808ClientBuilder;
+ //}
+ /////
+ ///// 消息应答服务(不同的消费者实例)
+ /////
+ ///// 自定义消息回复服务
+ /////
+ /////
+ //public static IJT808ClientBuilder AddReplyMessage(this IJT808ClientBuilder jT808ClientBuilder)
+ // where TReplyMessageHandler : JT808QueueReplyMessageHandler
+ //{
+ // jT808ClientBuilder.JT808Builder.Services.AddSingleton();
+ // jT808ClientBuilder.JT808Builder.Services.AddHostedService();
+ // return jT808ClientBuilder;
+ //}
}
}
diff --git a/src/JT808.Gateway.Services/JT808.Gateway.ReplyMessage/JT808ReplyMessageHostedService.cs b/src/JT808.Gateway.Services/JT808.Gateway.ReplyMessage/JT808ReplyMessageHostedService.cs
index dfcdef3..cf5be45 100644
--- a/src/JT808.Gateway.Services/JT808.Gateway.ReplyMessage/JT808ReplyMessageHostedService.cs
+++ b/src/JT808.Gateway.Services/JT808.Gateway.ReplyMessage/JT808ReplyMessageHostedService.cs
@@ -5,30 +5,30 @@ using JT808.Gateway.Abstractions;
namespace JT808.Gateway.ReplyMessage
{
- public class JT808ReplyMessageHostedService : IHostedService
- {
- private readonly IJT808MsgConsumer jT808MsgConsumer;
- private readonly JT808QueueReplyMessageHandler jT808ReplyMessageHandler;
+ //public class JT808ReplyMessageHostedService : IHostedService
+ //{
+ // //private readonly IJT808MsgConsumer jT808MsgConsumer;
+ // //private readonly JT808QueueReplyMessageHandler jT808ReplyMessageHandler;
- public JT808ReplyMessageHostedService(
- JT808QueueReplyMessageHandler jT808ReplyMessageHandler,
- IJT808MsgConsumer jT808MsgConsumer)
- {
- this.jT808MsgConsumer = jT808MsgConsumer;
- this.jT808ReplyMessageHandler = jT808ReplyMessageHandler;
- }
+ // //public JT808ReplyMessageHostedService(
+ // // JT808QueueReplyMessageHandler jT808ReplyMessageHandler,
+ // // IJT808MsgConsumer jT808MsgConsumer)
+ // //{
+ // // this.jT808MsgConsumer = jT808MsgConsumer;
+ // // this.jT808ReplyMessageHandler = jT808ReplyMessageHandler;
+ // //}
- public Task StartAsync(CancellationToken cancellationToken)
- {
- jT808MsgConsumer.Subscribe();
- jT808MsgConsumer.OnMessage(jT808ReplyMessageHandler.Processor);
- return Task.CompletedTask;
- }
+ // //public Task StartAsync(CancellationToken cancellationToken)
+ // //{
+ // // jT808MsgConsumer.Subscribe();
+ // // jT808MsgConsumer.OnMessage(jT808ReplyMessageHandler.Processor);
+ // // return Task.CompletedTask;
+ // //}
- public Task StopAsync(CancellationToken cancellationToken)
- {
- jT808MsgConsumer.Unsubscribe();
- return Task.CompletedTask;
- }
- }
+ // //public Task StopAsync(CancellationToken cancellationToken)
+ // //{
+ // // jT808MsgConsumer.Unsubscribe();
+ // // return Task.CompletedTask;
+ // //}
+ //}
}
diff --git a/src/JT808.Gateway.Services/JT808.Gateway.SessionNotice/JT808SessionNoticeExtensions.cs b/src/JT808.Gateway.Services/JT808.Gateway.SessionNotice/JT808SessionNoticeExtensions.cs
index 945286b..9d8293b 100644
--- a/src/JT808.Gateway.Services/JT808.Gateway.SessionNotice/JT808SessionNoticeExtensions.cs
+++ b/src/JT808.Gateway.Services/JT808.Gateway.SessionNotice/JT808SessionNoticeExtensions.cs
@@ -40,7 +40,7 @@ namespace JT808.Gateway.SessionNotice
///
///
///
- public static IJT808NormalGatewayBuilder AddSessionNotice(this IJT808NormalGatewayBuilder jT808NormalGatewayBuilder)
+ public static IJT808GatewayBuilder AddSessionNotice(this IJT808GatewayBuilder jT808NormalGatewayBuilder)
{
jT808NormalGatewayBuilder.JT808Builder.Services.AddSingleton();
jT808NormalGatewayBuilder.JT808Builder.Services.AddHostedService();
@@ -53,7 +53,7 @@ namespace JT808.Gateway.SessionNotice
/// 自定义会话通知服务
///
///
- public static IJT808NormalGatewayBuilder AddSessionNotice(this IJT808NormalGatewayBuilder jT808NormalGatewayBuilder)
+ public static IJT808GatewayBuilder AddSessionNotice(this IJT808GatewayBuilder jT808NormalGatewayBuilder)
where TSessionNoticeService : JT808SessionNoticeService
{
jT808NormalGatewayBuilder.JT808Builder.Services.AddSingleton();
diff --git a/src/JT808.Gateway.Services/JT808.Gateway.Traffic/JT808TrafficServiceExtensions.cs b/src/JT808.Gateway.Services/JT808.Gateway.Traffic/JT808TrafficServiceExtensions.cs
index 7ea99b5..16e89ad 100644
--- a/src/JT808.Gateway.Services/JT808.Gateway.Traffic/JT808TrafficServiceExtensions.cs
+++ b/src/JT808.Gateway.Services/JT808.Gateway.Traffic/JT808TrafficServiceExtensions.cs
@@ -38,7 +38,7 @@ namespace JT808.Gateway.Traffic
///
///
///
- public static IJT808NormalGatewayBuilder AddTraffic(this IJT808NormalGatewayBuilder jT808NormalGatewayBuilder)
+ public static IJT808GatewayBuilder AddTraffic(this IJT808GatewayBuilder jT808NormalGatewayBuilder)
where TIJT808Traffic : IJT808Traffic
{
jT808NormalGatewayBuilder.JT808Builder.Services.AddSingleton(typeof(IJT808Traffic), typeof(TIJT808Traffic));
@@ -51,7 +51,7 @@ namespace JT808.Gateway.Traffic
///
///
///
- public static IJT808NormalGatewayBuilder AddTraffic(this IJT808NormalGatewayBuilder jT808NormalGatewayBuilder)
+ public static IJT808GatewayBuilder AddTraffic(this IJT808GatewayBuilder jT808NormalGatewayBuilder)
{
jT808NormalGatewayBuilder.JT808Builder.Services.AddSingleton(typeof(IJT808Traffic), typeof(JT808TrafficDefault));
return jT808NormalGatewayBuilder;
diff --git a/src/JT808.Gateway.Services/JT808.Gateway.Transmit/JT808TransmitExtensions.cs b/src/JT808.Gateway.Services/JT808.Gateway.Transmit/JT808TransmitExtensions.cs
index f06c214..f4d7cce 100644
--- a/src/JT808.Gateway.Services/JT808.Gateway.Transmit/JT808TransmitExtensions.cs
+++ b/src/JT808.Gateway.Services/JT808.Gateway.Transmit/JT808TransmitExtensions.cs
@@ -31,7 +31,7 @@ namespace JT808.Gateway.Transmit
///
///
///
- public static IJT808NormalGatewayBuilder AddTransmit(this IJT808NormalGatewayBuilder jT808NormalGatewayBuilder, IConfiguration configuration)
+ public static IJT808GatewayBuilder AddTransmit(this IJT808GatewayBuilder jT808NormalGatewayBuilder, IConfiguration configuration)
{
jT808NormalGatewayBuilder.JT808Builder.Services.Configure(configuration.GetSection("RemoteServerOptions"));
jT808NormalGatewayBuilder.JT808Builder.Services.AddSingleton();
diff --git a/src/JT808.Gateway.Tests/JT808.Gateway.NormalHosting/JT808.Gateway.NormalHosting.csproj b/src/JT808.Gateway.Tests/JT808.Gateway.NormalHosting/JT808.Gateway.NormalHosting.csproj
index d338923..623e7c3 100644
--- a/src/JT808.Gateway.Tests/JT808.Gateway.NormalHosting/JT808.Gateway.NormalHosting.csproj
+++ b/src/JT808.Gateway.Tests/JT808.Gateway.NormalHosting/JT808.Gateway.NormalHosting.csproj
@@ -6,6 +6,7 @@
+
diff --git a/src/JT808.Gateway.Tests/JT808.Gateway.NormalHosting/Program.cs b/src/JT808.Gateway.Tests/JT808.Gateway.NormalHosting/Program.cs
index 8d1b064..3d017d4 100644
--- a/src/JT808.Gateway.Tests/JT808.Gateway.NormalHosting/Program.cs
+++ b/src/JT808.Gateway.Tests/JT808.Gateway.NormalHosting/Program.cs
@@ -52,7 +52,7 @@ namespace JT808.Gateway.NormalHosting
//// options.TcpPort = 808;
//// options.UdpPort = 808;
////})
- .AddNormalGateway(hostContext.Configuration)
+ .AddGateway(hostContext.Configuration)
//.ReplaceNormalReplyMessageHandler()
//.AddMsgLogging()
//.AddTraffic()
diff --git a/src/JT808.Gateway.Tests/JT808.Gateway.QueueHosting/Program.cs b/src/JT808.Gateway.Tests/JT808.Gateway.QueueHosting/Program.cs
index a9e3e58..da7c251 100644
--- a/src/JT808.Gateway.Tests/JT808.Gateway.QueueHosting/Program.cs
+++ b/src/JT808.Gateway.Tests/JT808.Gateway.QueueHosting/Program.cs
@@ -46,7 +46,7 @@ namespace JT808.Gateway.QueueHosting
// options.TcpPort = 808;
// options.UdpPort = 808;
//})
- .AddQueueGateway(hostContext.Configuration)
+ .AddGateway(hostContext.Configuration)
.AddServerKafkaMsgProducer(hostContext.Configuration)
.AddServerKafkaSessionProducer(hostContext.Configuration)
.AddServerKafkaMsgReplyConsumer(hostContext.Configuration)
@@ -61,14 +61,13 @@ namespace JT808.Gateway.QueueHosting
//添加消息应答服务
.AddMsgReplyProducer(hostContext.Configuration)
//添加消息应答处理
- .AddReplyMessage()
+ //.AddReplyMessage()
;
//grpc客户端调用
//services.AddHostedService();
//客户端测试
services.AddHostedService();
});
-
await serverHostBuilder.RunConsoleAsync();
}
}
diff --git a/src/JT808.Gateway.Tests/JT808.Gateway.Test/JT808HttpClientTest.cs b/src/JT808.Gateway.Tests/JT808.Gateway.Test/JT808HttpClientTest.cs
index 7bd298c..5ebb2c9 100644
--- a/src/JT808.Gateway.Tests/JT808.Gateway.Test/JT808HttpClientTest.cs
+++ b/src/JT808.Gateway.Tests/JT808.Gateway.Test/JT808HttpClientTest.cs
@@ -30,8 +30,7 @@ namespace JT808.Gateway.Test
Assert.Equal("123456", token);
Assert.Equal("http://localhost/", uri);
serviceDescriptors.AddJT808WebApiClientTool(builder.Build());
- }
-
+ }
[Fact(DisplayName = "使用postman测试")]
public void Test2()
{
@@ -43,8 +42,42 @@ namespace JT808.Gateway.Test
//http://127.0.0.1:828/jt808api/Tcp/Session/RemoveByTerminalPhoneNo
//123456789
///http://127.0.0.1:828/jt808api/UnificationSend
- //{"TerminalPhoneNo":"123456789","Data":"7e 01 02 7e"}
- //{"TerminalPhoneNo":"123456789","Data":"7e01027e"}
+ //{"TerminalPhoneNo":"123456789","HexData":"7e 01 02 7e"}
+ //{"TerminalPhoneNo":"123456789","HexData":"7e01027e"}
+ //UDP
+ //http://127.0.0.1:828/jt808api/Udp/Session/GetAll
+ //http://127.0.0.1:828/jt808api/Udp/Session/RemoveUdpByTerminalPhoneNo
+ //123456789
+ //http://127.0.0.1:828/jt808api/Udp/Session/QueryUdpSessionByTerminalPhoneNo
}
+
+ [Fact]
+ public void Test3()
+ {
+ IServiceCollection serviceDescriptors = new ServiceCollection();
+ serviceDescriptors.AddSingleton();
+
+ IServiceProvider aa = serviceDescriptors.BuildServiceProvider();
+ IServiceCollection sc= aa.GetRequiredService();
+ sc.AddSingleton();
+
+ IServiceProvider aa1 = serviceDescriptors.BuildServiceProvider();
+ B b = aa.GetRequiredService();
+ }
+ }
+
+ public class A
+ {
+
+ }
+
+ public class B
+ {
+
+ }
+
+ public class C
+ {
+
}
}
diff --git a/src/JT808.Gateway.WebApiClientTool/JT808.Gateway.WebApiClientTool.csproj b/src/JT808.Gateway.WebApiClientTool/JT808.Gateway.WebApiClientTool.csproj
index 9f9ae3b..f38f02d 100644
--- a/src/JT808.Gateway.WebApiClientTool/JT808.Gateway.WebApiClientTool.csproj
+++ b/src/JT808.Gateway.WebApiClientTool/JT808.Gateway.WebApiClientTool.csproj
@@ -16,8 +16,8 @@
true
JT808.Gateway.WebApiClientTool
JT808.Gateway.WebApiClientTool
- 基于Pipeline的WebApiClient客户端调用工具
- 基于Pipeline的WebApiClient客户端调用工具
+ JT808WebApiClient客户端调用工具
+ JT808WebApiClient客户端调用工具
JT808.Gateway.WebApiClientTool.xml
diff --git a/src/JT808.Gateway.WebApiClientTool/JT808.Gateway.WebApiClientTool.xml b/src/JT808.Gateway.WebApiClientTool/JT808.Gateway.WebApiClientTool.xml
index 5fca67f..ed3caba 100644
--- a/src/JT808.Gateway.WebApiClientTool/JT808.Gateway.WebApiClientTool.xml
+++ b/src/JT808.Gateway.WebApiClientTool/JT808.Gateway.WebApiClientTool.xml
@@ -4,24 +4,47 @@
JT808.Gateway.WebApiClientTool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 统一下发信息
+
+
+
+
会话服务集合
-
+
- 会话服务-通过设备终端号移除对应会话
+ 会话服务-通过设备终端号查询对应会话信息
-
+
- 统一下发信息
+ 会话服务-通过设备终端号移除对应会话
-
+
@@ -30,5 +53,41 @@
+
+
+ 会话服务-通过设备终端号查询对应会话信息
+
+
+
+
+
+
+ 会话服务-通过设备终端号移除对应会话
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/JT808.Gateway.WebApiClientTool/JT808HttpClient.cs b/src/JT808.Gateway.WebApiClientTool/JT808HttpClient.cs
index ee2c135..2b6e609 100644
--- a/src/JT808.Gateway.WebApiClientTool/JT808HttpClient.cs
+++ b/src/JT808.Gateway.WebApiClientTool/JT808HttpClient.cs
@@ -10,14 +10,41 @@ using System.Threading.Tasks;
namespace JT808.Gateway.WebApiClientTool
{
+ ///
+ ///
+ ///
public class JT808HttpClient
{
- //todo:其余接口待接入
+ ///
+ ///
+ ///
public HttpClient HttpClient { get; }
+
+ ///
+ ///
+ ///
+ ///
public JT808HttpClient(HttpClient httpClient)
{
HttpClient = httpClient;
}
+
+ ///
+ /// 统一下发信息
+ ///
+ ///
+ ///
+ public async ValueTask> UnificationSend(JT808UnificationSendRequestDto jT808UnificationSendRequestDto)
+ {
+ var request = new HttpRequestMessage(HttpMethod.Post, JT808GatewayConstants.JT808WebApiRouteTable.UnificationSend);
+ request.Content = new StringContent(JsonSerializer.Serialize(jT808UnificationSendRequestDto));
+ var response = await HttpClient.SendAsync(request);
+ response.EnsureSuccessStatusCode();
+ var data = await response.Content.ReadAsStreamAsync();
+ var value = await JsonSerializer.DeserializeAsync>(data);
+ return value;
+ }
+
///
/// 会话服务集合
///
@@ -33,30 +60,30 @@ namespace JT808.Gateway.WebApiClientTool
}
///
- /// 会话服务-通过设备终端号移除对应会话
+ /// 会话服务-通过设备终端号查询对应会话信息
///
///
///
- public async ValueTask> RemoveByTerminalPhoneNo(string terminalPhoneNo)
+ public async ValueTask> QueryTcpSessionByTerminalPhoneNo(string terminalPhoneNo)
{
- var request = new HttpRequestMessage(HttpMethod.Post, JT808GatewayConstants.JT808WebApiRouteTable.SessionRemoveByTerminalPhoneNo);
+ var request = new HttpRequestMessage(HttpMethod.Post, JT808GatewayConstants.JT808WebApiRouteTable.QueryTcpSessionByTerminalPhoneNo);
request.Content = new StringContent(terminalPhoneNo);
var response = await HttpClient.SendAsync(request);
response.EnsureSuccessStatusCode();
var data = await response.Content.ReadAsStreamAsync();
- var value = await JsonSerializer.DeserializeAsync>(data);
+ var value = await JsonSerializer.DeserializeAsync>(data);
return value;
}
///
- /// 统一下发信息
+ /// 会话服务-通过设备终端号移除对应会话
///
- ///
+ ///
///
- public async ValueTask> UnificationSend(JT808UnificationSendRequestDto jT808UnificationSendRequestDto)
+ public async ValueTask> RemoveTcpByTerminalPhoneNo(string terminalPhoneNo)
{
- var request = new HttpRequestMessage(HttpMethod.Post, JT808GatewayConstants.JT808WebApiRouteTable.UnificationSend);
- request.Content = new StringContent(JsonSerializer.Serialize(jT808UnificationSendRequestDto));
+ var request = new HttpRequestMessage(HttpMethod.Post, JT808GatewayConstants.JT808WebApiRouteTable.SessionRemoveByTerminalPhoneNo);
+ request.Content = new StringContent(terminalPhoneNo);
var response = await HttpClient.SendAsync(request);
response.EnsureSuccessStatusCode();
var data = await response.Content.ReadAsStreamAsync();
@@ -77,5 +104,37 @@ namespace JT808.Gateway.WebApiClientTool
var value = await JsonSerializer.DeserializeAsync>>(data);
return value;
}
+
+ ///
+ /// 会话服务-通过设备终端号查询对应会话信息
+ ///
+ ///
+ ///
+ public async ValueTask> QueryUdpSessionByTerminalPhoneNo(string terminalPhoneNo)
+ {
+ var request = new HttpRequestMessage(HttpMethod.Post, JT808GatewayConstants.JT808WebApiRouteTable.QueryUdpSessionByTerminalPhoneNo);
+ request.Content = new StringContent(terminalPhoneNo);
+ var response = await HttpClient.SendAsync(request);
+ response.EnsureSuccessStatusCode();
+ var data = await response.Content.ReadAsStreamAsync();
+ var value = await JsonSerializer.DeserializeAsync>(data);
+ return value;
+ }
+
+ ///
+ /// 会话服务-通过设备终端号移除对应会话
+ ///
+ ///
+ ///
+ public async ValueTask> RemoveUdpByTerminalPhoneNo(string terminalPhoneNo)
+ {
+ var request = new HttpRequestMessage(HttpMethod.Post, JT808GatewayConstants.JT808WebApiRouteTable.RemoveUdpByTerminalPhoneNo);
+ request.Content = new StringContent(terminalPhoneNo);
+ var response = await HttpClient.SendAsync(request);
+ response.EnsureSuccessStatusCode();
+ var data = await response.Content.ReadAsStreamAsync();
+ var value = await JsonSerializer.DeserializeAsync>(data);
+ return value;
+ }
}
}
diff --git a/src/JT808.Gateway.WebApiClientTool/JT808HttpClientExtensions.cs b/src/JT808.Gateway.WebApiClientTool/JT808HttpClientExtensions.cs
index efee4ed..09df102 100644
--- a/src/JT808.Gateway.WebApiClientTool/JT808HttpClientExtensions.cs
+++ b/src/JT808.Gateway.WebApiClientTool/JT808HttpClientExtensions.cs
@@ -6,8 +6,18 @@ using System.Text;
namespace JT808.Gateway.WebApiClientTool
{
+ ///
+ ///
+ ///
public static class JT808HttpClientExtensions
{
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
public static IServiceCollection AddJT808WebApiClientTool(this IServiceCollection serviceDescriptors, Uri webapiUri,string token)
{
serviceDescriptors.AddHttpClient("JT808WebApiClientTool", c =>
@@ -20,6 +30,12 @@ namespace JT808.Gateway.WebApiClientTool
return serviceDescriptors;
}
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
public static IServiceCollection AddJT808WebApiClientTool(this IServiceCollection serviceDescriptors, IConfiguration configuration)
{
serviceDescriptors.AddHttpClient("JT808WebApiClientTool", c =>
diff --git a/src/JT808.Gateway.sln b/src/JT808.Gateway.sln
index bf58e6c..4a366d7 100644
--- a/src/JT808.Gateway.sln
+++ b/src/JT808.Gateway.sln
@@ -17,8 +17,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Gateway.MsgLogging",
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Gateway.SessionNotice", "JT808.Gateway.Services\JT808.Gateway.SessionNotice\JT808.Gateway.SessionNotice.csproj", "{1CB84599-5F56-4461-A451-DF16E3854AB9}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Gateway.ReplyMessage", "JT808.Gateway.Services\JT808.Gateway.ReplyMessage\JT808.Gateway.ReplyMessage.csproj", "{604BB5CF-9ED1-4D78-9328-59436E2B4EB4}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Gateway.Transmit", "JT808.Gateway.Services\JT808.Gateway.Transmit\JT808.Gateway.Transmit.csproj", "{598E445A-AF2E-42F0-98F4-18EC22E473FC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Gateway.Client", "JT808.Gateway.Client\JT808.Gateway.Client.csproj", "{AC3070AC-A938-4213-A562-C079BB4A3F9E}"
@@ -41,6 +39,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Gateway.Traffic", "JT
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Gateway.WebApiClientTool", "JT808.Gateway.WebApiClientTool\JT808.Gateway.WebApiClientTool.csproj", "{479DFD02-4777-4DC2-9E2E-8EA33BFB36C9}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Gateway.ReplyMessage", "JT808.Gateway.Services\JT808.Gateway.ReplyMessage\JT808.Gateway.ReplyMessage.csproj", "{886D0A3F-C974-442B-9820-F1C4C04EAAB6}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -71,10 +71,6 @@ Global
{1CB84599-5F56-4461-A451-DF16E3854AB9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1CB84599-5F56-4461-A451-DF16E3854AB9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1CB84599-5F56-4461-A451-DF16E3854AB9}.Release|Any CPU.Build.0 = Release|Any CPU
- {604BB5CF-9ED1-4D78-9328-59436E2B4EB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {604BB5CF-9ED1-4D78-9328-59436E2B4EB4}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {604BB5CF-9ED1-4D78-9328-59436E2B4EB4}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {604BB5CF-9ED1-4D78-9328-59436E2B4EB4}.Release|Any CPU.Build.0 = Release|Any CPU
{598E445A-AF2E-42F0-98F4-18EC22E473FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{598E445A-AF2E-42F0-98F4-18EC22E473FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{598E445A-AF2E-42F0-98F4-18EC22E473FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -111,6 +107,10 @@ Global
{479DFD02-4777-4DC2-9E2E-8EA33BFB36C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{479DFD02-4777-4DC2-9E2E-8EA33BFB36C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{479DFD02-4777-4DC2-9E2E-8EA33BFB36C9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {886D0A3F-C974-442B-9820-F1C4C04EAAB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {886D0A3F-C974-442B-9820-F1C4C04EAAB6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {886D0A3F-C974-442B-9820-F1C4C04EAAB6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {886D0A3F-C974-442B-9820-F1C4C04EAAB6}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -119,7 +119,6 @@ Global
{D62E3054-6924-4F1A-9BEF-E52B191F16B6} = {3EF8490D-C993-49D8-8A3D-493B7F259D70}
{A242A839-4F00-4434-A7E8-7E3BEBA5B75C} = {3EF8490D-C993-49D8-8A3D-493B7F259D70}
{1CB84599-5F56-4461-A451-DF16E3854AB9} = {3EF8490D-C993-49D8-8A3D-493B7F259D70}
- {604BB5CF-9ED1-4D78-9328-59436E2B4EB4} = {3EF8490D-C993-49D8-8A3D-493B7F259D70}
{598E445A-AF2E-42F0-98F4-18EC22E473FC} = {3EF8490D-C993-49D8-8A3D-493B7F259D70}
{E3DC260E-0B55-4993-B051-402E44D4E883} = {7CBAACEE-19BF-499A-8C41-36A1324D45E9}
{22368AAD-A1F3-446B-B68F-98A0933BF1F6} = {7CBAACEE-19BF-499A-8C41-36A1324D45E9}
@@ -127,6 +126,7 @@ Global
{E34C6B7D-A48B-4871-895C-07AC12F959D3} = {6FAEC008-93CB-4730-8C58-D31FFD342C4F}
{AF0C529A-D3CA-4FE4-93B4-735D0934EBEF} = {6FAEC008-93CB-4730-8C58-D31FFD342C4F}
{E5A0BFB6-4345-4592-A2B1-E3CB1FA423AE} = {3EF8490D-C993-49D8-8A3D-493B7F259D70}
+ {886D0A3F-C974-442B-9820-F1C4C04EAAB6} = {3EF8490D-C993-49D8-8A3D-493B7F259D70}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {AA9303A7-6FB3-4572-88AA-3302E85330D1}
diff --git a/src/JT808.Gateway/Handlers/JT808MsgIdDefaultWebApiHandler.cs b/src/JT808.Gateway/Handlers/JT808MsgIdDefaultWebApiHandler.cs
index 3652cdf..779824e 100644
--- a/src/JT808.Gateway/Handlers/JT808MsgIdDefaultWebApiHandler.cs
+++ b/src/JT808.Gateway/Handlers/JT808MsgIdDefaultWebApiHandler.cs
@@ -225,7 +225,7 @@ namespace JT808.Gateway.Handlers
try
{
JT808UnificationSendRequestDto jT808UnificationSendRequestDto = JsonSerializer.Deserialize(json);
- resultDto.Data = JT808SessionManager.TrySendByTerminalPhoneNoAsync(jT808UnificationSendRequestDto.TerminalPhoneNo, jT808UnificationSendRequestDto.Data.ToHexBytes())
+ resultDto.Data = JT808SessionManager.TrySendByTerminalPhoneNoAsync(jT808UnificationSendRequestDto.TerminalPhoneNo, jT808UnificationSendRequestDto.HexData.ToHexBytes())
.GetAwaiter()
.GetResult();
resultDto.Code = JT808ResultCode.Ok;
diff --git a/src/JT808.Gateway/JT808.Gateway.csproj b/src/JT808.Gateway/JT808.Gateway.csproj
index 419fda3..09ada4d 100644
--- a/src/JT808.Gateway/JT808.Gateway.csproj
+++ b/src/JT808.Gateway/JT808.Gateway.csproj
@@ -19,6 +19,10 @@
JT808.Gateway
$(JT808GatewayPackageVersion)
+
+
+
+
diff --git a/src/JT808.Gateway/JT808GatewayExtensions.cs b/src/JT808.Gateway/JT808GatewayExtensions.cs
index 2be0b6c..baee533 100644
--- a/src/JT808.Gateway/JT808GatewayExtensions.cs
+++ b/src/JT808.Gateway/JT808GatewayExtensions.cs
@@ -1,7 +1,6 @@
using JT808.Gateway.Abstractions;
using JT808.Gateway.Authorization;
using JT808.Gateway.Configurations;
-using JT808.Gateway.Enums;
using JT808.Gateway.Handlers;
using JT808.Gateway.Internal;
using JT808.Gateway.Services;
@@ -19,47 +18,63 @@ namespace JT808.Gateway
{
public static partial class JT808GatewayExtensions
{
- public static IJT808QueueGatewayBuilder AddQueueGateway(this IJT808Builder jT808Builder, Action config)
- {
- IJT808QueueGatewayBuilder server = new JT808QueueGatewayBuilderDefault(jT808Builder);
- server.JT808Builder.Services.Configure(config);
- server.AddJT808Core();
- server.JT808Builder.Services.AddHostedService();
- return server;
- }
+ //public static IJT808QueueGatewayBuilder AddQueueGateway(this IJT808Builder jT808Builder, Action config)
+ //{
+ // IJT808QueueGatewayBuilder server = new JT808QueueGatewayBuilderDefault(jT808Builder);
+ // server.JT808Builder.Services.Configure(config);
+ // server.AddJT808Core();
+ // server.JT808Builder.Services.AddHostedService();
+ // return server;
+ //}
- public static IJT808NormalGatewayBuilder AddNormalGateway(this IJT808Builder jT808Builder, Action config)
- {
- IJT808NormalGatewayBuilder server = new JT808NormalGatewayBuilderDefault(jT808Builder);
- server.JT808Builder.Services.AddSingleton();
- server.JT808Builder.Services.Configure(config);
- server.AddJT808Core();
- return server;
- }
+ //public static IJT808NormalGatewayBuilder AddNormalGateway(this IJT808Builder jT808Builder, Action config)
+ //{
+ // IJT808NormalGatewayBuilder server = new JT808NormalGatewayBuilderDefault(jT808Builder);
+ // server.JT808Builder.Services.AddSingleton();
+ // server.JT808Builder.Services.Configure(config);
+ // server.AddJT808Core();
+ // return server;
+ //}
- public static IJT808QueueGatewayBuilder AddQueueGateway(this IJT808Builder jT808Builder, IConfiguration configuration)
- {
- IJT808QueueGatewayBuilder server = new JT808QueueGatewayBuilderDefault(jT808Builder);
- server.JT808Builder.Services.Configure(configuration.GetSection("JT808Configuration"));
- server.AddJT808Core();
- server.JT808Builder.Services.AddHostedService();
- return server;
- }
+ //public static IJT808QueueGatewayBuilder AddQueueGateway(this IJT808Builder jT808Builder, IConfiguration configuration)
+ //{
+ // IJT808QueueGatewayBuilder server = new JT808QueueGatewayBuilderDefault(jT808Builder);
+ // server.JT808Builder.Services.Configure(configuration.GetSection("JT808Configuration"));
+ // server.AddJT808Core();
+ // server.JT808Builder.Services.AddHostedService();
+ // return server;
+ //}
+
+ //public static IJT808NormalGatewayBuilder AddNormalGateway(this IJT808Builder jT808Builder, IConfiguration configuration)
+ //{
+ // IJT808NormalGatewayBuilder server = new JT808NormalGatewayBuilderDefault(jT808Builder);
+ // server.JT808Builder.Services.AddSingleton();
+ // server.JT808Builder.Services.Configure(configuration.GetSection("JT808Configuration"));
+ // server.AddJT808Core();
+ // return server;
+ //}
- public static IJT808NormalGatewayBuilder AddNormalGateway(this IJT808Builder jT808Builder, IConfiguration configuration)
+ //public static IJT808NormalGatewayBuilder ReplaceNormalReplyMessageHandler(this IJT808NormalGatewayBuilder config)
+ // where TJT808NormalReplyMessageHandler : JT808NormalReplyMessageHandler
+ //{
+ // config.JT808Builder.Services.Replace(new ServiceDescriptor(typeof(JT808NormalReplyMessageHandler),typeof(TJT808NormalReplyMessageHandler), ServiceLifetime.Singleton));
+ // return config;
+ //}
+
+ public static IJT808GatewayBuilder AddGateway(this IJT808Builder jT808Builder, Action config)
{
- IJT808NormalGatewayBuilder server = new JT808NormalGatewayBuilderDefault(jT808Builder);
- server.JT808Builder.Services.AddSingleton();
- server.JT808Builder.Services.Configure(configuration.GetSection("JT808Configuration"));
- server.AddJT808Core();
- return server;
+ JT808GatewayBuilderDefault jT808GatewayBuilderDefault = new JT808GatewayBuilderDefault(jT808Builder);
+ jT808GatewayBuilderDefault.JT808Builder.Services.Configure(config);
+ jT808GatewayBuilderDefault.AddJT808Core();
+ return jT808GatewayBuilderDefault;
}
- public static IJT808NormalGatewayBuilder ReplaceNormalReplyMessageHandler(this IJT808NormalGatewayBuilder config)
- where TJT808NormalReplyMessageHandler : JT808NormalReplyMessageHandler
+ public static IJT808GatewayBuilder AddGateway(this IJT808Builder jT808Builder, IConfiguration configuration)
{
- config.JT808Builder.Services.Replace(new ServiceDescriptor(typeof(JT808NormalReplyMessageHandler),typeof(TJT808NormalReplyMessageHandler), ServiceLifetime.Singleton));
- return config;
+ JT808GatewayBuilderDefault jT808GatewayBuilderDefault = new JT808GatewayBuilderDefault(jT808Builder);
+ jT808GatewayBuilderDefault.JT808Builder.Services.Configure(configuration.GetSection("JT808Configuration"));
+ jT808GatewayBuilderDefault.AddJT808Core();
+ return jT808GatewayBuilderDefault;
}
public static IJT808GatewayBuilder AddTcp(this IJT808GatewayBuilder config)
diff --git a/src/JT808.Gateway/JT808TcpServer.cs b/src/JT808.Gateway/JT808TcpServer.cs
index 3d6e137..eb06588 100644
--- a/src/JT808.Gateway/JT808TcpServer.cs
+++ b/src/JT808.Gateway/JT808TcpServer.cs
@@ -1,17 +1,12 @@
using System;
using System.Buffers;
-using System.Collections.Generic;
using System.IO.Pipelines;
using System.Net;
using System.Net.Sockets;
-using System.Text;
using System.Threading;
using System.Threading.Tasks;
using JT808.Gateway.Abstractions;
-using JT808.Gateway.Abstractions.Enums;
using JT808.Gateway.Configurations;
-using JT808.Gateway.Enums;
-using JT808.Gateway.Services;
using JT808.Gateway.Session;
using JT808.Protocol;
using JT808.Protocol.Exceptions;
@@ -30,62 +25,32 @@ namespace JT808.Gateway
private readonly JT808SessionManager SessionManager;
- private readonly IJT808MsgProducer MsgProducer;
-
private readonly JT808Serializer Serializer;
private readonly JT808Configuration Configuration;
- private readonly JT808NormalReplyMessageHandler JT808NormalReplyMessageHandler;
-
- private JT808UseType JT808UseType;
+ private readonly JT808MessageHandler MessageHandler;
///
/// 使用队列方式
///
+ ///
///
///
///
///
- ///
- ///
- public JT808TcpServer(
- IOptions jT808ConfigurationAccessor,
- IJT808Config jT808Config,
- ILoggerFactory loggerFactory,
- JT808SessionManager jT808SessionManager,
- IJT808MsgProducer jT808MsgProducer)
- {
- SessionManager = jT808SessionManager;
- Logger = loggerFactory.CreateLogger("JT808TcpServer");
- Serializer = jT808Config.GetSerializer();
- MsgProducer = jT808MsgProducer;
- Configuration = jT808ConfigurationAccessor.Value;
- JT808UseType = JT808UseType.Queue;
- InitServer();
- }
- ///
- /// 使用正常方式
- ///
- ///
- ///
- ///
- ///
- ///
- ///
public JT808TcpServer(
+ JT808MessageHandler messageHandler,
IOptions jT808ConfigurationAccessor,
IJT808Config jT808Config,
ILoggerFactory loggerFactory,
- JT808SessionManager jT808SessionManager,
- JT808NormalReplyMessageHandler replyMessageHandler)
+ JT808SessionManager jT808SessionManager)
{
+ MessageHandler = messageHandler;
SessionManager = jT808SessionManager;
Logger = loggerFactory.CreateLogger("JT808TcpServer");
Serializer = jT808Config.GetSerializer();
- JT808NormalReplyMessageHandler = replyMessageHandler;
Configuration = jT808ConfigurationAccessor.Value;
- JT808UseType = JT808UseType.Normal;
InitServer();
}
@@ -231,14 +196,7 @@ namespace JT808.Gateway
var package = Serializer.HeaderDeserialize(contentSpan, minBufferSize: 10240);
if (Logger.IsEnabled(LogLevel.Trace)) Logger.LogTrace($"[Accept Hex {session.Client.RemoteEndPoint}]:{package.OriginalData.ToArray().ToHexString()}");
SessionManager.TryLink(package.Header.TerminalPhoneNo, session);
- if(JT808UseType== JT808UseType.Normal)
- {
- JT808NormalReplyMessageHandler.Processor(package, session);
- }
- else if(JT808UseType== JT808UseType.Queue)
- {
- MsgProducer.ProduceAsync(package.Header.TerminalPhoneNo, package.OriginalData.ToArray());
- }
+ MessageHandler.Processor(package, session);
}
}
catch (NotImplementedException ex)
diff --git a/src/JT808.Gateway/JT808UdpServer.cs b/src/JT808.Gateway/JT808UdpServer.cs
index 8c40aab..a66e1d1 100644
--- a/src/JT808.Gateway/JT808UdpServer.cs
+++ b/src/JT808.Gateway/JT808UdpServer.cs
@@ -8,10 +8,7 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using JT808.Gateway.Abstractions;
-using JT808.Gateway.Abstractions.Enums;
using JT808.Gateway.Configurations;
-using JT808.Gateway.Enums;
-using JT808.Gateway.Services;
using JT808.Gateway.Session;
using JT808.Protocol;
using JT808.Protocol.Exceptions;
@@ -30,49 +27,26 @@ namespace JT808.Gateway
private readonly JT808SessionManager SessionManager;
- private readonly IJT808MsgProducer MsgProducer;
-
private readonly JT808Serializer Serializer;
private readonly JT808Configuration Configuration;
private readonly IPEndPoint LocalIPEndPoint;
- private readonly JT808NormalReplyMessageHandler JT808NormalReplyMessageHandler;
-
- private JT808UseType JT808UseType;
+ private readonly JT808MessageHandler MessageHandler;
public JT808UdpServer(
IOptions jT808ConfigurationAccessor,
IJT808Config jT808Config,
ILoggerFactory loggerFactory,
JT808SessionManager jT808SessionManager,
- IJT808MsgProducer jT808MsgProducer)
- {
- SessionManager = jT808SessionManager;
- Logger = loggerFactory.CreateLogger("JT808UdpServer");
- Serializer = jT808Config.GetSerializer();
- MsgProducer = jT808MsgProducer;
- Configuration = jT808ConfigurationAccessor.Value;
- JT808UseType = JT808UseType.Queue;
- LocalIPEndPoint = new System.Net.IPEndPoint(IPAddress.Any, Configuration.UdpPort);
- server = new Socket(LocalIPEndPoint.AddressFamily, SocketType.Dgram, ProtocolType.Udp);
- server.Bind(LocalIPEndPoint);
- }
-
- public JT808UdpServer(
- IOptions jT808ConfigurationAccessor,
- IJT808Config jT808Config,
- ILoggerFactory loggerFactory,
- JT808SessionManager jT808SessionManager,
- JT808NormalReplyMessageHandler replyMessageHandler)
+ JT808MessageHandler messageHandler)
{
SessionManager = jT808SessionManager;
Logger = loggerFactory.CreateLogger("JT808UdpServer");
Serializer = jT808Config.GetSerializer();
- JT808NormalReplyMessageHandler = replyMessageHandler;
Configuration = jT808ConfigurationAccessor.Value;
- JT808UseType = JT808UseType.Normal;
+ MessageHandler = messageHandler;
LocalIPEndPoint = new System.Net.IPEndPoint(IPAddress.Any, Configuration.UdpPort);
server = new Socket(LocalIPEndPoint.AddressFamily, SocketType.Dgram, ProtocolType.Udp);
server.Bind(LocalIPEndPoint);
@@ -120,14 +94,7 @@ namespace JT808.Gateway
{
Logger.LogInformation($"[Connected]:{receiveMessageFromResult.RemoteEndPoint}");
}
- if (JT808UseType == JT808UseType.Normal)
- {
- JT808NormalReplyMessageHandler.Processor(package, session);
- }
- else if (JT808UseType == JT808UseType.Queue)
- {
- MsgProducer.ProduceAsync(package.Header.TerminalPhoneNo, package.OriginalData.ToArray());
- }
+ MessageHandler.Processor(package, session);
}
catch (NotImplementedException ex)
{