|
@@ -1,6 +1,6 @@ |
|
|
# JT808DotNetty |
|
|
# JT808DotNetty |
|
|
|
|
|
|
|
|
基于DotNetty封装的JT808DotNetty通用消息业务处理 |
|
|
|
|
|
|
|
|
基于DotNetty封装的JT808DotNetty支持TCP/UDP通用消息业务处理 |
|
|
|
|
|
|
|
|
[了解JT808协议进这边](https://github.com/SmallChi/JT808) |
|
|
[了解JT808协议进这边](https://github.com/SmallChi/JT808) |
|
|
|
|
|
|
|
@@ -25,92 +25,14 @@ |
|
|
|
|
|
|
|
|
### 1.集成原包分发器 |
|
|
### 1.集成原包分发器 |
|
|
|
|
|
|
|
|
| 功能 | 说明 | 使用场景 | |
|
|
|
|
|
|:-------:|:-------:|:-------:| |
|
|
|
|
|
| ISourcePackageDispatcher | 原包分发器(支持热更新、断线重连) | 需要将原数据转给其他平台 | |
|
|
|
|
|
|
|
|
|
|
|
### 2.集成WebApi服务器 |
|
|
### 2.集成WebApi服务器 |
|
|
|
|
|
|
|
|
[WebApi接口服务](https://github.com/SmallChi/JT808DotNetty/blob/master/api/README.md) |
|
|
[WebApi接口服务](https://github.com/SmallChi/JT808DotNetty/blob/master/api/README.md) |
|
|
|
|
|
|
|
|
### 3.集成会话通知(在线/离线) |
|
|
### 3.集成会话通知(在线/离线) |
|
|
|
|
|
|
|
|
| 功能 | 说明 | |
|
|
|
|
|
|:-------:|:-------:| |
|
|
|
|
|
| JT808SessionPublishingRedisImpl | 基于Redis的发布通知 | |
|
|
|
|
|
| JT808SessionPublishingEmptyImpl | 默认空实现 | |
|
|
|
|
|
|
|
|
|
|
|
使用场景:有些超长待机的设备,不会实时保持连接,那么通过平台下发的命令是无法到达的,这时候就需要设备一上线,就即时通知服务去处理,然后在即时的下发消息到设备。 |
|
|
使用场景:有些超长待机的设备,不会实时保持连接,那么通过平台下发的命令是无法到达的,这时候就需要设备一上线,就即时通知服务去处理,然后在即时的下发消息到设备。 |
|
|
|
|
|
|
|
|
> 只要实现IJT808SessionPublishing接口的任意一款MQ都能实现该功能。 |
|
|
> 只要实现IJT808SessionPublishing接口的任意一款MQ都能实现该功能。 |
|
|
|
|
|
|
|
|
### 4.集成业务消息处理程序 |
|
|
|
|
|
|
|
|
|
|
|
| 功能 | 说明 | 使用场景 | |
|
|
|
|
|
|:-------:|:-------:|:-------:| |
|
|
|
|
|
| JT808MsgIdHandlerBase | 业务消息处理程序 | 需要自定义实现业务消息处理程序 | |
|
|
|
|
|
|
|
|
|
|
|
### 举个栗子1 |
|
|
|
|
|
|
|
|
|
|
|
#### 4.1.实现业务消息处理程序JT808MsgIdHandlerBase |
|
|
|
|
|
|
|
|
|
|
|
```business Imp |
|
|
|
|
|
public class JT808MsgIdCustomHandler : JT808MsgIdHandlerBase |
|
|
|
|
|
{ |
|
|
|
|
|
private readonly ILogger<JT808MsgIdCustomHandler> logger; |
|
|
|
|
|
|
|
|
|
|
|
public JT808MsgIdCustomHandler(ILoggerFactory loggerFactory, |
|
|
|
|
|
JT808SessionManager sessionManager) : base(sessionManager) |
|
|
|
|
|
{ |
|
|
|
|
|
logger = loggerFactory.CreateLogger<JT808MsgIdCustomHandler>(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public override JT808Response Msg0x0102(JT808Request request) |
|
|
|
|
|
{ |
|
|
|
|
|
logger.LogDebug("Msg0x0102"); |
|
|
|
|
|
return base.Msg0x0102(request); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
#### 4.2.自定义业务消息处理程序替换默认实现 |
|
|
|
|
|
|
|
|
|
|
|
``` handler |
|
|
|
|
|
services.Replace(new ServiceDescriptor(typeof(JT808MsgIdHandlerBase), typeof(JT808MsgIdCustomHandler), ServiceLifetime.Singleton)); |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
#### 4.3.使用JT808 Host |
|
|
|
|
|
|
|
|
|
|
|
``` host |
|
|
|
|
|
UseJT808Host() |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
#### 4.4.完整示例 |
|
|
|
|
|
|
|
|
|
|
|
``` demo |
|
|
|
|
|
// 默认网关端口:808 |
|
|
|
|
|
// 默认webapi端口:828 |
|
|
|
|
|
static async Task Main(string[] args) |
|
|
|
|
|
{ |
|
|
|
|
|
var serverHostBuilder = new HostBuilder() |
|
|
|
|
|
.ConfigureAppConfiguration((hostingContext, config) => |
|
|
|
|
|
{ |
|
|
|
|
|
config.SetBasePath(AppDomain.CurrentDomain.BaseDirectory); |
|
|
|
|
|
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); |
|
|
|
|
|
}) |
|
|
|
|
|
.ConfigureLogging((context, logging) => |
|
|
|
|
|
{ |
|
|
|
|
|
logging.AddConsole(); |
|
|
|
|
|
logging.SetMinimumLevel(LogLevel.Error); |
|
|
|
|
|
}) |
|
|
|
|
|
.ConfigureServices((hostContext, services) => |
|
|
|
|
|
{ |
|
|
|
|
|
services.AddSingleton<ILoggerFactory, LoggerFactory>(); |
|
|
|
|
|
services.AddSingleton(typeof(ILogger<>), typeof(Logger<>)); |
|
|
|
|
|
services.Replace(new ServiceDescriptor(typeof(JT808MsgIdHandlerBase), typeof(JT808MsgIdCustomHandler), ServiceLifetime.Singleton)); |
|
|
|
|
|
}) |
|
|
|
|
|
.UseJT808Host(); |
|
|
|
|
|
await serverHostBuilder.RunConsoleAsync(); |
|
|
|
|
|
} |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
### 4.集成业务消息处理程序 |