Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
SmallChi aa33ccbc54 1.更新808模块代码 6 år sedan
api 1.完善webapi服务文档 6 år sedan
doc 修改设计模型 6 år sedan
src 1.更新808模块代码 6 år sedan
.gitignore Initial commit 6 år sedan
.gitmodules 增加子模块 6 år sedan
LICENSE Initial commit 6 år sedan
README.md 1.完善webapi服务文档 6 år sedan

README.md

JT808DotNetty

基于DotNetty封装的JT808DotNetty通用消息业务处理

了解JT808协议进这边

了解JT809协议进这边

玩一玩压力测试

MIT Licence

新网关的优势:

  1. 跨平台
  2. 借助 .NET Core模块化的思想
  3. 单机同时一万辆车在线不是梦(真有一万辆车那都很吃香了<( ̄3 ̄)> <( ̄3 ̄)> <( ̄3 ̄)> )
  4. 简单易上手

设计模型

design_model

集成功能实现

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();
}