You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

81 lines
3.6 KiB

  1. using JT808.DotNetty.Abstractions;
  2. using JT808.DotNetty.Core;
  3. using JT808.DotNetty.Core.Handlers;
  4. using JT808.DotNetty.Tcp;
  5. using JT808.DotNetty.Udp;
  6. using JT808.DotNetty.WebApi;
  7. using JT808.DotNetty.WebApiClientTool;
  8. using JT808.Protocol;
  9. using JT808.Protocol.Interfaces;
  10. using Microsoft.Extensions.Configuration;
  11. using Microsoft.Extensions.DependencyInjection;
  12. using Microsoft.Extensions.DependencyInjection.Extensions;
  13. using Microsoft.Extensions.Hosting;
  14. using Microsoft.Extensions.Logging;
  15. using NLog.Extensions.Logging;
  16. using System;
  17. using System.Collections.Concurrent;
  18. using System.Collections.Generic;
  19. using System.Diagnostics;
  20. using System.Threading.Tasks;
  21. using JT808.DotNetty.Kafka;
  22. namespace JT808.DotNetty.Hosting
  23. {
  24. class Program
  25. {
  26. static async Task Main(string[] args)
  27. {
  28. //7E020000220138123456780085000000010000000101EA2A3F08717931000C015400201901032000020104000000E6F87E
  29. var serverHostBuilder = new HostBuilder()
  30. .ConfigureAppConfiguration((hostingContext, config) =>
  31. {
  32. config.SetBasePath(AppDomain.CurrentDomain.BaseDirectory);
  33. config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
  34. })
  35. .ConfigureLogging((context, logging) =>
  36. {
  37. if (Environment.OSVersion.Platform == PlatformID.Unix)
  38. {
  39. NLog.LogManager.LoadConfiguration("Configs/nlog.unix.config");
  40. }
  41. else
  42. {
  43. NLog.LogManager.LoadConfiguration("Configs/nlog.win.config");
  44. }
  45. logging.AddNLog(new NLogProviderOptions { CaptureMessageTemplates = true, CaptureMessageProperties = true });
  46. logging.SetMinimumLevel(LogLevel.Trace);
  47. })
  48. .ConfigureServices((hostContext, services) =>
  49. {
  50. services.AddSingleton<ILoggerFactory, LoggerFactory>();
  51. services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));
  52. services.AddJT808Configure()
  53. .AddJT808NettyCore(hostContext.Configuration)
  54. .AddJT808TcpNettyHost()
  55. .AddJT808UdpNettyHost()
  56. .AddJT808WebApiNettyHost()
  57. //扩展webapi JT808MsgIdHttpHandlerBase
  58. //.ReplaceMsgIdHandler<JT808MsgIdHttpCustomHandler>()
  59. .Builder()
  60. //添加kafka插件
  61. .AddJT808ServerKafkaMsgProducer(hostContext.Configuration)
  62. .AddJT808ServerKafkaMsgReplyConsumer(hostContext.Configuration)
  63. .AddJT808ServerKafkaSessionProducer(hostContext.Configuration)
  64. .Builder();
  65. //使用微软自带的webapi客户端
  66. //services.AddHttpClient("jt808webapi", c =>
  67. //{
  68. // c.BaseAddress = new Uri("http://localhost:828/");
  69. // c.DefaultRequestHeaders.Add("token", "123456);
  70. //})
  71. //.AddTypedClient<JT808HttpClient>();
  72. //var client = services.BuildServiceProvider().GetRequiredService<JT808HttpClient>();
  73. //var result = client.GetTcpAtomicCounter();
  74. });
  75. await serverHostBuilder.RunConsoleAsync();
  76. }
  77. }
  78. }