基于DotNetty封装的JT808DotNetty支持TCP/UDP通用消息业务处理
services.AddGrpcClient<JT808Gateway.JT808GatewayClient>(o =>
{
o.Address = new Uri("https://localhost:5001");
});
接口名称 | 接口说明 | 使用场景 |
---|---|---|
IJT808SessionProducer | 会话通知(在线/离线)数据生产接口 | 有些超长待机的设备,不会实时保持连接,那么通过平台下发的命令是无法到达的,这时候就需要设备一上线,就即时通知服务去处理,然后在即时的下发消息到设备。 |
IJT808SessionConsumer | 会话通知(在线/离线)数据消费接口 | - |
IJT808MsgProducer | 数据生产接口 | 网关将接收到的数据发送到队列 |
IJT808MsgConsumer | 数据消费接口 | 将数据进行对应的消息业务处理(例:设备流量统计、第三方平台数据转发、消息日志等) |
IJT808MsgReplyProducer | 应答数据生产接口 | 将生产的数据解析为对应的消息Id应答发送到队列 |
IJT808MsgReplyConsumer | 应答数据消费接口 | 将接收到的应答数据下发给设备 |
使用物联网卡通过udp下发指令时,存储的那个socket地址端口,有效期非常短,不速度快点下发,那个socket地址端口就可能映射到别的对应卡去了,所以此处采用跟随设备消息下发指令。
服务名称 | 服务说明 | 使用场景 |
---|---|---|
MsgIdHandler | 消息处理服务 | 从队列中消费设备上报数据,再结合自身的业务场景,将数据进行处理并入库 |
MsgLogging | 消息日志服务 | 从队列中消费设备上报和平台应答数据,再将数据存入influxdb等数据库中,便于技术和技术支持排查设备与平台交互的原始数据 |
ReplyMessage | 消息响应服务 | 用于响应设备上报消息,以及下发指令信息到设备 |
SessionNotice | 会话管理服务 | 通知设备上线下线,对于udp设备来说,可以在设备上线时,将指令跟随消息下发到设备 |
Traffic | 流量统计服务 | 由于运营商sim卡查询流量滞后,通过流量统计服务可以实时准确的统计设备流量,可以最优配置设备的流量大小,以节省成本 |
Transmit | 原包转发服务 | 该服务可以将设备上报原始数据转发到第三方,支持全部转发,指定终端号转发 |
Package Name | Version | Downloads |
---|---|---|
Install-Package JT808.Gateway | ||
Install-Package JT808.Gateway.Kafka |
1.进入JT808.Gateway.SimpleServer项目下的Debug目录运行服务端
2.进入JT808.Gateway.SimpleClient项目下的Debug目录运行客户端
static void Main(string[] args)
{
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
//配置Grpc服务端
webBuilder
.ConfigureKestrel(options =>
{
options.Listen(IPAddress.Any, 5001, listenOptions =>
{
listenOptions.Protocols = HttpProtocols.Http2;
listenOptions.UseHttps($"{Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Configs", "test.cer")}", "");
});
})
.Configure(app =>
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
//配置Grpc服务节点
endpoints.MapGrpcService<JT808GatewayService>();
});
});
})
.ConfigureServices((hostContext,services) =>
{
//services.Configure<KestrelServerOptions>(hostContext.Configuration.GetSection("Kestrel"));
//添加Grpc服务
services.AddGrpc();
//添加JT808协议
services.AddJT808Configure()
//添加JT808网关配置
.AddJT808Gateway(hostContext.Configuration)
//添加基于Tcp的808网关
.AddJT808GatewayTcpHost()
//添加基于Udp的808网关
.AddJT808GatewayUdpHost()
.Builder();
})
.Build()
.Run();
}