JT808DotNetty
基于DotNetty封装的JT808DotNetty通用消息业务处理
了解JT808协议进这边
了解JT809协议进这边
玩一玩压力测试

新网关的优势:
- 跨平台
- 借助 .NET Core模块化的思想
- 单机同时一万辆车在线不是梦(真有一万辆车那都很吃香了<( ̄3 ̄)> <( ̄3 ̄)> <( ̄3 ̄)> )
- 简单易上手
设计模型

集成功能实现
1.集成原包分发器
功能 |
说明 |
使用场景 |
ISourcePackageDispatcher |
原包分发器(支持热更新、断线重连) |
需要将原数据转给其他平台 |
2.集成WebApi服务器
WebApi接口服务
3.集成业务消息处理程序
功能 |
说明 |
使用场景 |
JT808MsgIdHandlerBase |
业务消息处理程序 |
需要自定义实现业务消息处理程序 |
举个栗子1
3.1.实现业务消息处理程序JT808MsgIdHandlerBase
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);
}
}
3.2.自定义业务消息处理程序替换默认实现
services.Replace(new ServiceDescriptor(typeof(JT808MsgIdHandlerBase), typeof(JT808MsgIdCustomHandler), ServiceLifetime.Singleton));
3.3.使用JT808 Host
UseJT808Host()
3.4.完整示例
// 默认网关端口: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();
}