@@ -10,6 +10,7 @@ using Microsoft.Extensions.Hosting; | |||||
using JT808.Gateway.Client; | using JT808.Gateway.Client; | ||||
using JT808.Gateway.SimpleClient.Services; | using JT808.Gateway.SimpleClient.Services; | ||||
using JT808.Gateway.SimpleClient.Jobs; | using JT808.Gateway.SimpleClient.Jobs; | ||||
using JT808.Gateway.WebApiClientTool; | |||||
namespace JT808.Gateway.SimpleClient | namespace JT808.Gateway.SimpleClient | ||||
{ | { | ||||
@@ -28,7 +29,9 @@ namespace JT808.Gateway.SimpleClient | |||||
services.AddSingleton<ILoggerFactory, LoggerFactory>(); | services.AddSingleton<ILoggerFactory, LoggerFactory>(); | ||||
services.AddSingleton(typeof(ILogger<>), typeof(Logger<>)); | services.AddSingleton(typeof(ILogger<>), typeof(Logger<>)); | ||||
services.AddJT808Configure() | services.AddJT808Configure() | ||||
.AddClient(); | |||||
.AddClient() | |||||
; | |||||
services.AddJT808WebApiClientTool(new Uri("http://127.0.0.1:828/"),"12346"); | |||||
services.AddHostedService<UpService>(); | services.AddHostedService<UpService>(); | ||||
services.AddHostedService<Up2019Service>(); | services.AddHostedService<Up2019Service>(); | ||||
services.AddHostedService<CallHttpClientJob>(); | services.AddHostedService<CallHttpClientJob>(); | ||||
@@ -33,8 +33,8 @@ namespace JT808.Gateway.Abstractions.Configurations | |||||
/// </summary> | /// </summary> | ||||
public int UdpReceiveTimeoutCheckTimeSeconds { get; set; } = 60; | public int UdpReceiveTimeoutCheckTimeSeconds { get; set; } = 60; | ||||
/// <summary> | /// <summary> | ||||
/// 网关不做消息业务处理,往队列发送 | |||||
/// 网关忽略消息应答 | |||||
/// </summary> | /// </summary> | ||||
public List<uint> FilterMsgIdHandlerForQueue { get; set; } = new List<uint>(); | |||||
public HashSet<uint> IgnoreMsgIdReply { get; set; } = new HashSet<uint>(); | |||||
} | } | ||||
} | } |
@@ -11,6 +11,7 @@ namespace JT808.Gateway.Abstractions | |||||
{ | { | ||||
public static async void SendAsync(this IJT808Session session,byte[] data) | public static async void SendAsync(this IJT808Session session,byte[] data) | ||||
{ | { | ||||
if (data == null) return; | |||||
if (session.TransportProtocolType == JT808TransportProtocolType.tcp) | if (session.TransportProtocolType == JT808TransportProtocolType.tcp) | ||||
{ | { | ||||
await session.Client.SendAsync(data, SocketFlags.None); | await session.Client.SendAsync(data, SocketFlags.None); | ||||
@@ -23,6 +24,7 @@ namespace JT808.Gateway.Abstractions | |||||
public static void Send(this IJT808Session session, byte[] data) | public static void Send(this IJT808Session session, byte[] data) | ||||
{ | { | ||||
if (data == null) return; | |||||
if (session.TransportProtocolType == JT808TransportProtocolType.tcp) | if (session.TransportProtocolType == JT808TransportProtocolType.tcp) | ||||
{ | { | ||||
session.Client.Send(data, SocketFlags.None); | session.Client.Send(data, SocketFlags.None); | ||||
@@ -30,9 +30,9 @@ | |||||
Udp 60s检查一次 | Udp 60s检查一次 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Gateway.Abstractions.Configurations.JT808Configuration.FilterMsgIdHandlerForQueue"> | |||||
<member name="P:JT808.Gateway.Abstractions.Configurations.JT808Configuration.IgnoreMsgIdReply"> | |||||
<summary> | <summary> | ||||
网关不做消息业务处理,往队列发送 | |||||
网关忽略消息应答 | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Gateway.Abstractions.Dtos.JT808TcpSessionInfoDto.LastActiveTime"> | <member name="P:JT808.Gateway.Abstractions.Dtos.JT808TcpSessionInfoDto.LastActiveTime"> | ||||
@@ -169,15 +169,14 @@ | |||||
通用消息处理程序 | 通用消息处理程序 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Processor(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Processor(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
消息处理 | 消息处理 | ||||
</summary> | </summary> | ||||
<param name="request">请求数据</param> | <param name="request">请求数据</param> | ||||
<param name="session">当前会话</param> | |||||
<returns>应答消息数据</returns> | <returns>应答消息数据</returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0001(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0001(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
终端通用应答 | 终端通用应答 | ||||
平台无需回复 | 平台无需回复 | ||||
@@ -186,172 +185,152 @@ | |||||
<param name="request"></param> | <param name="request"></param> | ||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.CommonReply(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.CommonReply(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
平台通用应答 | 平台通用应答 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0002(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0002(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
终端心跳 | 终端心跳 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0004(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0004(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
查询服务器时间 | 查询服务器时间 | ||||
2019版本 | 2019版本 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x8003(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x8003(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
服务器补传分包请求 | 服务器补传分包请求 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0005(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0005(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
终端补传分包请求 | 终端补传分包请求 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0100(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0100(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
终端注册 | 终端注册 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0003(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0003(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
终端注销 | 终端注销 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0102(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0102(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
终端鉴权 | 终端鉴权 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0104(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0104(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
查询终端参数应答 | 查询终端参数应答 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0107(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0107(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
查询终端属性应答 | 查询终端属性应答 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0108(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0108(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
终端升级结果应答 | 终端升级结果应答 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0200(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0200(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
位置信息汇报 | 位置信息汇报 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0201(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0201(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
位置信息查询应答 | 位置信息查询应答 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x8204(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x8204(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
链路检测 | 链路检测 | ||||
2019版本 | 2019版本 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0500(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0500(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
车辆控制应答 | 车辆控制应答 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0704(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0704(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
定位数据批量上传 | 定位数据批量上传 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0705(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0705(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
CAN总线数据上传 | CAN总线数据上传 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0800(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0800(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
多媒体事件信息上传 | 多媒体事件信息上传 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0801(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0801(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
多媒体数据上传 | 多媒体数据上传 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x8801(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x8801(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
摄像头立即拍摄命令 | 摄像头立即拍摄命令 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0900(JT808.Protocol.JT808HeaderPackage,JT808.Gateway.Abstractions.IJT808Session)"> | |||||
<member name="M:JT808.Gateway.Abstractions.JT808MessageHandler.Msg0x0900(JT808.Protocol.JT808HeaderPackage)"> | |||||
<summary> | <summary> | ||||
数据上行透传 | 数据上行透传 | ||||
</summary> | </summary> | ||||
<param name="request"></param> | <param name="request"></param> | ||||
<param name="session"></param> | |||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.Abstractions.JT808MsgIdHttpHandlerBase.#ctor"> | <member name="M:JT808.Gateway.Abstractions.JT808MsgIdHttpHandlerBase.#ctor"> | ||||
@@ -18,7 +18,7 @@ namespace JT808.Gateway.Abstractions | |||||
{ | { | ||||
protected Dictionary<ushort, MsgIdMethodDelegate> HandlerDict { get; } | protected Dictionary<ushort, MsgIdMethodDelegate> HandlerDict { get; } | ||||
protected delegate byte[] MsgIdMethodDelegate(JT808HeaderPackage package, IJT808Session session); | |||||
protected delegate byte[] MsgIdMethodDelegate(JT808HeaderPackage package); | |||||
protected JT808Serializer JT808Serializer { get; } | protected JT808Serializer JT808Serializer { get; } | ||||
protected IJT808MsgProducer MsgProducer; | protected IJT808MsgProducer MsgProducer; | ||||
@@ -66,44 +66,31 @@ namespace JT808.Gateway.Abstractions | |||||
/// 消息处理 | /// 消息处理 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request">请求数据</param> | /// <param name="request">请求数据</param> | ||||
/// <param name="session">当前会话</param> | |||||
/// <returns>应答消息数据</returns> | /// <returns>应答消息数据</returns> | ||||
public virtual byte[] Processor(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Processor(JT808HeaderPackage request) | |||||
{ | { | ||||
if (MsgProducer != null) | |||||
{ | |||||
MsgProducer.ProduceAsync(request.Header.TerminalPhoneNo, request.OriginalData.ToArray()); | |||||
} | |||||
if (HandlerDict.TryGetValue(request.Header.MsgId, out var func)) | if (HandlerDict.TryGetValue(request.Header.MsgId, out var func)) | ||||
{ | { | ||||
if (JT808ConfigurationOptionsMonitor.CurrentValue.FilterMsgIdHandlerForQueue != null) | |||||
var data = func(request); | |||||
if (MsgReplyLoggingProducer != null) | |||||
{ | { | ||||
// 网关不做消息业务处理,往队列发送 | |||||
if (JT808ConfigurationOptionsMonitor.CurrentValue.FilterMsgIdHandlerForQueue.Contains(request.Header.MsgId)) | |||||
MsgReplyLoggingProducer.ProduceAsync(request.Header.TerminalPhoneNo, data); | |||||
} | |||||
if (JT808ConfigurationOptionsMonitor.CurrentValue.IgnoreMsgIdReply != null && JT808ConfigurationOptionsMonitor.CurrentValue.IgnoreMsgIdReply.Count > 0) | |||||
{ | |||||
if (JT808ConfigurationOptionsMonitor.CurrentValue.IgnoreMsgIdReply.Contains(request.Header.MsgId)) | |||||
{ | { | ||||
if (MsgProducer != null) | |||||
{ | |||||
MsgProducer.ProduceAsync(request.Header.TerminalPhoneNo, request.OriginalData.ToArray()); | |||||
} | |||||
return default; | return default; | ||||
} | } | ||||
else | |||||
{ | |||||
var data=func(request, session); | |||||
MsgReplyLoggingProducer.ProduceAsync(request.Header.TerminalPhoneNo, data); | |||||
return data; | |||||
} | |||||
} | |||||
else | |||||
{ | |||||
var data = func(request, session); | |||||
MsgReplyLoggingProducer.ProduceAsync(request.Header.TerminalPhoneNo, data); | |||||
return data; | |||||
} | } | ||||
return data; | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
//处理不了的消息Id统一发队列 | |||||
if (MsgProducer != null) | |||||
{ | |||||
MsgProducer.ProduceAsync(request.Header.TerminalPhoneNo, request.OriginalData.ToArray()); | |||||
} | |||||
return default; | return default; | ||||
} | } | ||||
} | } | ||||
@@ -115,7 +102,7 @@ namespace JT808.Gateway.Abstractions | |||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0001(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0001(JT808HeaderPackage request) | |||||
{ | { | ||||
return default; | return default; | ||||
} | } | ||||
@@ -123,8 +110,7 @@ namespace JT808.Gateway.Abstractions | |||||
/// 平台通用应答 | /// 平台通用应答 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
public virtual byte[] CommonReply(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] CommonReply(JT808HeaderPackage request) | |||||
{ | { | ||||
if (request.Version == JT808Version.JTT2019) | if (request.Version == JT808Version.JTT2019) | ||||
{ | { | ||||
@@ -134,7 +120,6 @@ namespace JT808.Gateway.Abstractions | |||||
JT808PlatformResult = JT808PlatformResult.成功, | JT808PlatformResult = JT808PlatformResult.成功, | ||||
MsgNum = request.Header.MsgNum | MsgNum = request.Header.MsgNum | ||||
})); | })); | ||||
session.Send(data); | |||||
return data; | return data; | ||||
} | } | ||||
else | else | ||||
@@ -145,7 +130,6 @@ namespace JT808.Gateway.Abstractions | |||||
JT808PlatformResult = JT808PlatformResult.成功, | JT808PlatformResult = JT808PlatformResult.成功, | ||||
MsgNum = request.Header.MsgNum | MsgNum = request.Header.MsgNum | ||||
})); | })); | ||||
session.Send(data); | |||||
return data; | return data; | ||||
} | } | ||||
} | } | ||||
@@ -154,33 +138,30 @@ namespace JT808.Gateway.Abstractions | |||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0002(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0002(JT808HeaderPackage request) | |||||
{ | { | ||||
return CommonReply(request, session); | |||||
return CommonReply(request); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 查询服务器时间 | /// 查询服务器时间 | ||||
/// 2019版本 | /// 2019版本 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0004(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0004(JT808HeaderPackage request) | |||||
{ | { | ||||
byte[] data = JT808Serializer.Serialize(JT808MsgId.查询服务器时间应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8004() | byte[] data = JT808Serializer.Serialize(JT808MsgId.查询服务器时间应答.Create(request.Header.TerminalPhoneNo, new JT808_0x8004() | ||||
{ | { | ||||
Time = DateTime.Now | Time = DateTime.Now | ||||
})); | })); | ||||
session.Send(data); | |||||
return data; | return data; | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 服务器补传分包请求 | /// 服务器补传分包请求 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x8003(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x8003(JT808HeaderPackage request) | |||||
{ | { | ||||
throw new NotImplementedException("0x8003-服务器补传分包请求"); | throw new NotImplementedException("0x8003-服务器补传分包请求"); | ||||
} | } | ||||
@@ -188,9 +169,8 @@ namespace JT808.Gateway.Abstractions | |||||
/// 终端补传分包请求 | /// 终端补传分包请求 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0005(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0005(JT808HeaderPackage request) | |||||
{ | { | ||||
throw new NotImplementedException("0x0005-终端补传分包请求"); | throw new NotImplementedException("0x0005-终端补传分包请求"); | ||||
} | } | ||||
@@ -198,9 +178,8 @@ namespace JT808.Gateway.Abstractions | |||||
/// 终端注册 | /// 终端注册 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0100(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0100(JT808HeaderPackage request) | |||||
{ | { | ||||
if (request.Version == JT808Version.JTT2019) | if (request.Version == JT808Version.JTT2019) | ||||
{ | { | ||||
@@ -210,7 +189,6 @@ namespace JT808.Gateway.Abstractions | |||||
JT808TerminalRegisterResult = JT808TerminalRegisterResult.成功, | JT808TerminalRegisterResult = JT808TerminalRegisterResult.成功, | ||||
AckMsgNum = request.Header.MsgNum | AckMsgNum = request.Header.MsgNum | ||||
})); | })); | ||||
session.Send(data); | |||||
return data; | return data; | ||||
} | } | ||||
else | else | ||||
@@ -221,7 +199,6 @@ namespace JT808.Gateway.Abstractions | |||||
JT808TerminalRegisterResult = JT808TerminalRegisterResult.成功, | JT808TerminalRegisterResult = JT808TerminalRegisterResult.成功, | ||||
AckMsgNum = request.Header.MsgNum | AckMsgNum = request.Header.MsgNum | ||||
})); | })); | ||||
session.Send(data); | |||||
return data; | return data; | ||||
} | } | ||||
} | } | ||||
@@ -229,80 +206,72 @@ namespace JT808.Gateway.Abstractions | |||||
/// 终端注销 | /// 终端注销 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0003(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0003(JT808HeaderPackage request) | |||||
{ | { | ||||
return CommonReply(request, session); | |||||
return CommonReply(request); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 终端鉴权 | /// 终端鉴权 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0102(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0102(JT808HeaderPackage request) | |||||
{ | { | ||||
return CommonReply(request, session); | |||||
return CommonReply(request); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 查询终端参数应答 | /// 查询终端参数应答 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0104(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0104(JT808HeaderPackage request) | |||||
{ | { | ||||
return CommonReply(request, session); | |||||
return CommonReply(request); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 查询终端属性应答 | /// 查询终端属性应答 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0107(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0107(JT808HeaderPackage request) | |||||
{ | { | ||||
return CommonReply(request, session); | |||||
return CommonReply(request); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 终端升级结果应答 | /// 终端升级结果应答 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0108(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0108(JT808HeaderPackage request) | |||||
{ | { | ||||
return CommonReply(request, session); | |||||
return CommonReply(request); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 位置信息汇报 | /// 位置信息汇报 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0200(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0200(JT808HeaderPackage request) | |||||
{ | { | ||||
return CommonReply(request, session); | |||||
return CommonReply(request); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 位置信息查询应答 | /// 位置信息查询应答 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0201(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0201(JT808HeaderPackage request) | |||||
{ | { | ||||
return CommonReply(request, session); | |||||
return CommonReply(request); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 链路检测 | /// 链路检测 | ||||
/// 2019版本 | /// 2019版本 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x8204(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x8204(JT808HeaderPackage request) | |||||
{ | { | ||||
return default; | return default; | ||||
} | } | ||||
@@ -310,49 +279,44 @@ namespace JT808.Gateway.Abstractions | |||||
/// 车辆控制应答 | /// 车辆控制应答 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0500(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0500(JT808HeaderPackage request) | |||||
{ | { | ||||
return CommonReply(request, session); | |||||
return CommonReply(request); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 定位数据批量上传 | /// 定位数据批量上传 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0704(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0704(JT808HeaderPackage request) | |||||
{ | { | ||||
return CommonReply(request, session); | |||||
return CommonReply(request); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// CAN总线数据上传 | /// CAN总线数据上传 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0705(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0705(JT808HeaderPackage request) | |||||
{ | { | ||||
return CommonReply(request, session); | |||||
return CommonReply(request); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 多媒体事件信息上传 | /// 多媒体事件信息上传 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0800(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0800(JT808HeaderPackage request) | |||||
{ | { | ||||
return CommonReply(request, session); | |||||
return CommonReply(request); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 多媒体数据上传 | /// 多媒体数据上传 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0801(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0801(JT808HeaderPackage request) | |||||
{ | { | ||||
throw new NotImplementedException("0x8800多媒体数据上传应答"); | throw new NotImplementedException("0x8800多媒体数据上传应答"); | ||||
} | } | ||||
@@ -360,9 +324,8 @@ namespace JT808.Gateway.Abstractions | |||||
/// 摄像头立即拍摄命令 | /// 摄像头立即拍摄命令 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x8801(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x8801(JT808HeaderPackage request) | |||||
{ | { | ||||
throw new NotImplementedException("0x0805摄像头立即拍摄命令应答"); | throw new NotImplementedException("0x0805摄像头立即拍摄命令应答"); | ||||
} | } | ||||
@@ -370,11 +333,10 @@ namespace JT808.Gateway.Abstractions | |||||
/// 数据上行透传 | /// 数据上行透传 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public virtual byte[] Msg0x0900(JT808HeaderPackage request, IJT808Session session) | |||||
public virtual byte[] Msg0x0900(JT808HeaderPackage request) | |||||
{ | { | ||||
return CommonReply(request, session); | |||||
return CommonReply(request); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -46,10 +46,10 @@ namespace JT808.Gateway.NormalHosting.Impl | |||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | /// <param name="session"></param> | ||||
public override byte[] Processor(JT808HeaderPackage request, IJT808Session session) | |||||
public override byte[] Processor(JT808HeaderPackage request) | |||||
{ | { | ||||
//处理上行消息 | //处理上行消息 | ||||
var down = base.Processor(request, session); | |||||
var down = base.Processor(request); | |||||
try | try | ||||
{ | { | ||||
//AOP 可以自定义添加一些东西:上下行日志、 | //AOP 可以自定义添加一些东西:上下行日志、 | ||||
@@ -73,13 +73,10 @@ namespace JT808.Gateway.NormalHosting.Impl | |||||
/// 重写自带的消息 | /// 重写自带的消息 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
public override byte[] Msg0x0200(JT808HeaderPackage request, IJT808Session session) | |||||
public override byte[] Msg0x0200(JT808HeaderPackage request) | |||||
{ | { | ||||
logger.LogDebug("重写自带Msg0x0200的消息"); | logger.LogDebug("重写自带Msg0x0200的消息"); | ||||
var data = base.Msg0x0200(request, session); | |||||
logger.LogDebug("往应答服务发送相同数据进行测试"); | |||||
MsgReplyProducer.ProduceAsync(request.Header.TerminalPhoneNo, data).ConfigureAwait(false); | |||||
var data = base.Msg0x0200(request); | |||||
return data; | return data; | ||||
} | } | ||||
@@ -88,7 +85,7 @@ namespace JT808.Gateway.NormalHosting.Impl | |||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public byte[] Msg0x9999(JT808HeaderPackage request, IJT808Session session) | |||||
public byte[] Msg0x9999(JT808HeaderPackage request) | |||||
{ | { | ||||
logger.LogDebug("自定义消息"); | logger.LogDebug("自定义消息"); | ||||
return default; | return default; | ||||
@@ -51,6 +51,8 @@ namespace JT808.Gateway.NormalHosting | |||||
//添加客户端工具 | //添加客户端工具 | ||||
.AddClient() | .AddClient() | ||||
.Builder() | .Builder() | ||||
//方式1:客户端webapi调用 | |||||
.AddWebApiClientTool(hostContext.Configuration) | |||||
.AddGateway(hostContext.Configuration) | .AddGateway(hostContext.Configuration) | ||||
.AddMessageHandler<JT808CustomMessageHandlerImpl>() | .AddMessageHandler<JT808CustomMessageHandlerImpl>() | ||||
.AddMsgReplyConsumer<JT808MsgReplyConsumer>() | .AddMsgReplyConsumer<JT808MsgReplyConsumer>() | ||||
@@ -60,7 +62,8 @@ namespace JT808.Gateway.NormalHosting | |||||
.AddTcp() | .AddTcp() | ||||
.AddUdp() | .AddUdp() | ||||
.AddHttp(); | .AddHttp(); | ||||
services.AddJT808WebApiClientTool(hostContext.Configuration); | |||||
//方式2:客户端webapi调用 | |||||
//services.AddJT808WebApiClientTool(hostContext.Configuration); | |||||
//httpclient客户端调用 | //httpclient客户端调用 | ||||
services.AddHostedService<CallHttpClientJob>(); | services.AddHostedService<CallHttpClientJob>(); | ||||
//客户端测试 依赖AddClient()服务 | //客户端测试 依赖AddClient()服务 | ||||
@@ -26,7 +26,7 @@ namespace JT808.Gateway.QueueHosting.Impl | |||||
{ | { | ||||
logger = loggerFactory.CreateLogger<JT808CustomMessageHandlerImpl>(); | logger = loggerFactory.CreateLogger<JT808CustomMessageHandlerImpl>(); | ||||
//过滤掉0x0200消息,通过服务服务进行下发应答,可以通过配置文件的方式进行增加修改(支持热更新) | //过滤掉0x0200消息,通过服务服务进行下发应答,可以通过配置文件的方式进行增加修改(支持热更新) | ||||
jT808ConfigurationOptionsMonitor.CurrentValue.FilterMsgIdHandlerForQueue.Add(0x0200); | |||||
//jT808ConfigurationOptionsMonitor.CurrentValue.IgnoreMsgIdReply.Add(0x0200); | |||||
//添加自定义消息 | //添加自定义消息 | ||||
HandlerDict.Add(0x9999, Msg0x9999); | HandlerDict.Add(0x9999, Msg0x9999); | ||||
} | } | ||||
@@ -37,11 +37,11 @@ namespace JT808.Gateway.QueueHosting.Impl | |||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | /// <param name="session"></param> | ||||
public override byte[] Processor(JT808HeaderPackage request, IJT808Session session) | |||||
public override byte[] Processor(JT808HeaderPackage request) | |||||
{ | { | ||||
try | try | ||||
{ | { | ||||
var down = base.Processor(request, session); | |||||
var down = base.Processor(request); | |||||
return down; | return down; | ||||
} | } | ||||
catch (Exception) | catch (Exception) | ||||
@@ -54,11 +54,10 @@ namespace JT808.Gateway.QueueHosting.Impl | |||||
/// 重写自带的消息 | /// 重写自带的消息 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <param name="session"></param> | |||||
public override byte[] Msg0x0200(JT808HeaderPackage request, IJT808Session session) | |||||
public override byte[] Msg0x0200(JT808HeaderPackage request) | |||||
{ | { | ||||
logger.LogDebug("由于过滤了0x0200,网关是不会处理0x0200消息的应答"); | |||||
var data = base.Msg0x0200(request, session); | |||||
//logger.LogDebug("由于过滤了0x0200,网关是不会处理0x0200消息的应答"); | |||||
var data = base.Msg0x0200(request); | |||||
return data; | return data; | ||||
} | } | ||||
@@ -67,7 +66,7 @@ namespace JT808.Gateway.QueueHosting.Impl | |||||
/// </summary> | /// </summary> | ||||
/// <param name="request"></param> | /// <param name="request"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public byte[] Msg0x9999(JT808HeaderPackage request, IJT808Session session) | |||||
public byte[] Msg0x9999(JT808HeaderPackage request) | |||||
{ | { | ||||
logger.LogDebug("自定义消息"); | logger.LogDebug("自定义消息"); | ||||
return default; | return default; | ||||
@@ -30,28 +30,9 @@ namespace JT808.Gateway.QueueHosting.Impl | |||||
logger.LogDebug($"实现消息应答处理,{TerminalNo},{Data.ToHexString()}"); | logger.LogDebug($"实现消息应答处理,{TerminalNo},{Data.ToHexString()}"); | ||||
} | } | ||||
var package = Serializer.Deserialize(Data); | var package = Serializer.Deserialize(Data); | ||||
if (package.Header.MsgId == 0x0200) | |||||
if (package.Header.MsgId == 0x09999) | |||||
{ | { | ||||
if (package.Version == JT808Version.JTT2019) | |||||
{ | |||||
byte[] data = Serializer.Serialize(JT808MsgId.平台通用应答.Create_平台通用应答_2019(package.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = package.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = package.Header.MsgNum | |||||
})); | |||||
return data; | |||||
} | |||||
else | |||||
{ | |||||
byte[] data = Serializer.Serialize(JT808MsgId.平台通用应答.Create(package.Header.TerminalPhoneNo, new JT808_0x8001() | |||||
{ | |||||
AckMsgId = package.Header.MsgId, | |||||
JT808PlatformResult = JT808PlatformResult.成功, | |||||
MsgNum = package.Header.MsgNum | |||||
})); | |||||
return data; | |||||
} | |||||
logger.LogDebug("====实现自定义或内部消息应答处理===="); | |||||
} | } | ||||
return default; | return default; | ||||
} | } | ||||
@@ -46,6 +46,8 @@ namespace JT808.Gateway.QueueHosting | |||||
.AddClient() | .AddClient() | ||||
.AddClientReport() | .AddClientReport() | ||||
.Builder() | .Builder() | ||||
//方式1:客户端webapi调用 | |||||
.AddWebApiClientTool(hostContext.Configuration) | |||||
//添加客户端服务 | //添加客户端服务 | ||||
.AddClientKafka() | .AddClientKafka() | ||||
.AddMsgConsumer(hostContext.Configuration) | .AddMsgConsumer(hostContext.Configuration) | ||||
@@ -63,7 +65,8 @@ namespace JT808.Gateway.QueueHosting | |||||
.AddTcp() | .AddTcp() | ||||
.AddUdp() | .AddUdp() | ||||
.AddHttp(); | .AddHttp(); | ||||
services.AddJT808WebApiClientTool(hostContext.Configuration); | |||||
//方式2:客户端webapi调用 | |||||
//services.AddJT808WebApiClientTool(hostContext.Configuration); | |||||
//httpclient客户端调用 | //httpclient客户端调用 | ||||
services.AddHostedService<CallHttpClientJob>(); | services.AddHostedService<CallHttpClientJob>(); | ||||
//客户端测试 | //客户端测试 | ||||
@@ -89,5 +89,22 @@ | |||||
<param name="configuration"></param> | <param name="configuration"></param> | ||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:JT808.Gateway.WebApiClientTool.JT808HttpClientExtensions.AddWebApiClientTool(JT808.Protocol.IJT808Builder,Microsoft.Extensions.Configuration.IConfiguration)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="jT808Builder"></param> | |||||
<param name="configuration"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JT808.Gateway.WebApiClientTool.JT808HttpClientExtensions.AddWebApiClientTool(JT808.Protocol.IJT808Builder,System.Uri,System.String)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="jT808Builder"></param> | |||||
<param name="webapiUri"></param> | |||||
<param name="token"></param> | |||||
<returns></returns> | |||||
</member> | |||||
</members> | </members> | ||||
</doc> | </doc> |
@@ -1,4 +1,6 @@ | |||||
using Microsoft.Extensions.Configuration; | |||||
using JT808.Gateway.Abstractions; | |||||
using JT808.Protocol; | |||||
using Microsoft.Extensions.Configuration; | |||||
using Microsoft.Extensions.DependencyInjection; | using Microsoft.Extensions.DependencyInjection; | ||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
@@ -47,5 +49,42 @@ namespace JT808.Gateway.WebApiClientTool | |||||
.AddTypedClient<JT808HttpClient>(); | .AddTypedClient<JT808HttpClient>(); | ||||
return serviceDescriptors; | return serviceDescriptors; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="jT808Builder"></param> | |||||
/// <param name="configuration"></param> | |||||
/// <returns></returns> | |||||
public static IJT808Builder AddWebApiClientTool(this IJT808Builder jT808Builder, IConfiguration configuration) | |||||
{ | |||||
jT808Builder.Services.AddHttpClient("JT808WebApiClientTool", c => | |||||
{ | |||||
c.DefaultRequestHeaders.Add("token", configuration.GetSection("JT808WebApiClientToolConfig:Token").Get<string>()); | |||||
c.BaseAddress = new Uri(configuration.GetSection("JT808WebApiClientToolConfig:Uri").Get<string>()); | |||||
c.Timeout = TimeSpan.FromSeconds(3); | |||||
}) | |||||
.AddTypedClient<JT808HttpClient>(); | |||||
return jT808Builder; | |||||
} | |||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="jT808Builder"></param> | |||||
/// <param name="webapiUri"></param> | |||||
/// <param name="token"></param> | |||||
/// <returns></returns> | |||||
public static IJT808Builder AddWebApiClientTool(this IJT808Builder jT808Builder, Uri webapiUri, string token) | |||||
{ | |||||
jT808Builder.Services.AddHttpClient("JT808WebApiClientTool", c => | |||||
{ | |||||
c.DefaultRequestHeaders.Add("token", token); | |||||
c.BaseAddress = webapiUri; | |||||
c.Timeout = TimeSpan.FromSeconds(3); | |||||
}) | |||||
.AddTypedClient<JT808HttpClient>(); | |||||
return jT808Builder; | |||||
} | |||||
} | } | ||||
} | } |
@@ -196,7 +196,8 @@ namespace JT808.Gateway | |||||
var package = Serializer.HeaderDeserialize(contentSpan, minBufferSize: 10240); | var package = Serializer.HeaderDeserialize(contentSpan, minBufferSize: 10240); | ||||
if (Logger.IsEnabled(LogLevel.Trace)) Logger.LogTrace($"[Accept Hex {session.Client.RemoteEndPoint}]:{package.OriginalData.ToArray().ToHexString()}"); | if (Logger.IsEnabled(LogLevel.Trace)) Logger.LogTrace($"[Accept Hex {session.Client.RemoteEndPoint}]:{package.OriginalData.ToArray().ToHexString()}"); | ||||
SessionManager.TryLink(package.Header.TerminalPhoneNo, session); | SessionManager.TryLink(package.Header.TerminalPhoneNo, session); | ||||
MessageHandler.Processor(package, session); | |||||
var downData = MessageHandler.Processor(package); | |||||
session.SendAsync(downData); | |||||
} | } | ||||
} | } | ||||
catch (NotImplementedException ex) | catch (NotImplementedException ex) | ||||
@@ -98,7 +98,8 @@ namespace JT808.Gateway | |||||
{ | { | ||||
Logger.LogInformation($"[Connected]:{receiveMessageFromResult.RemoteEndPoint}"); | Logger.LogInformation($"[Connected]:{receiveMessageFromResult.RemoteEndPoint}"); | ||||
} | } | ||||
MessageHandler.Processor(package, session); | |||||
var downData = MessageHandler.Processor(package); | |||||
session.SendAsync(downData); | |||||
} | } | ||||
catch (NotImplementedException ex) | catch (NotImplementedException ex) | ||||
{ | { | ||||
@@ -1,6 +1,6 @@ | |||||
<Project> | <Project> | ||||
<PropertyGroup> | <PropertyGroup> | ||||
<JT808DotNettyPackageVersion>2.3.2</JT808DotNettyPackageVersion> | <JT808DotNettyPackageVersion>2.3.2</JT808DotNettyPackageVersion> | ||||
<JT808GatewayPackageVersion>1.1.0-preview1</JT808GatewayPackageVersion> | |||||
<JT808GatewayPackageVersion>1.1.0-preview2</JT808GatewayPackageVersion> | |||||
</PropertyGroup> | </PropertyGroup> | ||||
</Project> | </Project> |