diff --git a/src/JT808.DotNetty.Abstractions/JT808.DotNetty.Abstractions.csproj b/src/JT808.DotNetty.Abstractions/JT808.DotNetty.Abstractions.csproj
index 559fd40..2283a90 100644
--- a/src/JT808.DotNetty.Abstractions/JT808.DotNetty.Abstractions.csproj
+++ b/src/JT808.DotNetty.Abstractions/JT808.DotNetty.Abstractions.csproj
@@ -14,7 +14,7 @@
https://github.com/SmallChi/JT808DotNetty
https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
true
- 1.0.2
+ 1.0.3
diff --git a/src/JT808.DotNetty.Core/Configurations/JT808Configuration.cs b/src/JT808.DotNetty.Core/Configurations/JT808Configuration.cs
index ff15407..48f1975 100644
--- a/src/JT808.DotNetty.Core/Configurations/JT808Configuration.cs
+++ b/src/JT808.DotNetty.Core/Configurations/JT808Configuration.cs
@@ -28,8 +28,6 @@ namespace JT808.DotNetty.Core.Configurations
public int AllIdleTimeSeconds { get; set; } = 3600;
- public int UdpSlidingExpirationTimeSeconds { get; set; } = 5*60;
-
///
/// WebApi服务
/// 默认828端口
diff --git a/src/JT808.DotNetty.Core/JT808.DotNetty.Core.csproj b/src/JT808.DotNetty.Core/JT808.DotNetty.Core.csproj
index fb50efa..379d79e 100644
--- a/src/JT808.DotNetty.Core/JT808.DotNetty.Core.csproj
+++ b/src/JT808.DotNetty.Core/JT808.DotNetty.Core.csproj
@@ -14,14 +14,17 @@
https://github.com/SmallChi/JT808DotNetty
https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
true
- 1.0.2
+ 1.0.3
+
+
+
+
-
diff --git a/src/JT808.DotNetty.Core/Jobs/JT808UdpMaintainSessionJob.cs b/src/JT808.DotNetty.Core/Jobs/JT808UdpMaintainSessionJob.cs
deleted file mode 100644
index f513e2b..0000000
--- a/src/JT808.DotNetty.Core/Jobs/JT808UdpMaintainSessionJob.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using JT808.DotNetty.Core.Configurations;
-using Microsoft.Extensions.Logging;
-using Microsoft.Extensions.Options;
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace JT808.DotNetty.Core.Jobs
-{
- public class JT808UdpMaintainSessionJob : JT808BackgroundService
- {
- private readonly ILogger _logger;
-
- private readonly JT808UdpSessionManager jT808UdpSessionManager;
- private readonly IOptionsMonitor jT808ConfigurationAccessor;
-
- public JT808UdpMaintainSessionJob(
- JT808UdpSessionManager jT808UdpSessionManager,
- IOptionsMonitor jT808ConfigurationAccessor,
- ILoggerFactory loggerFactory)
- {
- this.jT808UdpSessionManager = jT808UdpSessionManager;
- this.jT808ConfigurationAccessor = jT808ConfigurationAccessor;
- _logger = loggerFactory.CreateLogger();
- }
-
- public override string ServiceName => nameof(JT808UdpMaintainSessionJob);
-
- protected override async Task ExecuteAsync(CancellationToken stoppingToken)
- {
- _logger.LogInformation($"{ServiceName} is starting.");
- stoppingToken.Register(() => _logger.LogInformation($"{ServiceName} background task is stopping."));
- while (!stoppingToken.IsCancellationRequested)
- {
- _logger.LogInformation($"{ServiceName} task doing background work.");
- jT808UdpSessionManager.TimerToRemoveExpiredData();
- await Task.Delay(TimeSpan.FromSeconds(jT808ConfigurationAccessor.CurrentValue.UdpSlidingExpirationTimeSeconds), stoppingToken);
- }
- _logger.LogInformation($"{ServiceName} background task is stopping.");
- }
- }
-}
\ No newline at end of file
diff --git a/src/JT808.DotNetty.Core/Session/JT808UdpSessionManager.cs b/src/JT808.DotNetty.Core/Session/JT808UdpSessionManager.cs
index 547ea08..047d549 100644
--- a/src/JT808.DotNetty.Core/Session/JT808UdpSessionManager.cs
+++ b/src/JT808.DotNetty.Core/Session/JT808UdpSessionManager.cs
@@ -6,7 +6,6 @@ using System.Linq;
using JT808.DotNetty.Abstractions;
using JT808.DotNetty.Core.Metadata;
using DotNetty.Transport.Channels;
-using Microsoft.Extensions.Caching.Memory;
using JT808.DotNetty.Core.Configurations;
using Microsoft.Extensions.Options;
@@ -21,17 +20,14 @@ namespace JT808.DotNetty.Core
private readonly ILogger logger;
private readonly IJT808SessionPublishing jT808SessionPublishing;
- private readonly IMemoryCache memoryCache;
private readonly IOptionsMonitor jT808ConfigurationAccessor;
public JT808UdpSessionManager(
IJT808SessionPublishing jT808SessionPublishing,
- IMemoryCache memoryCache,
IOptionsMonitor jT808ConfigurationAccessor,
ILoggerFactory loggerFactory)
{
this.jT808SessionPublishing = jT808SessionPublishing;
logger = loggerFactory.CreateLogger();
- this.memoryCache = memoryCache;
this.jT808ConfigurationAccessor = jT808ConfigurationAccessor;
}
@@ -58,59 +54,28 @@ namespace JT808.DotNetty.Core
return default;
}
}
- ///
- /// 定期去删除过期数据
- ///
- public void TimerToRemoveExpiredData() {
- foreach (var item in SessionIdDict)
- {
- memoryCache.Get(item.Key);
- }
- }
public void TryAdd(JT808UdpSession appSession)
{
- memoryCache.GetOrCreate(appSession.TerminalPhoneNo, (cacheEntry) =>
- {
- cacheEntry.SetSlidingExpiration(TimeSpan.FromSeconds(jT808ConfigurationAccessor.CurrentValue.UdpSlidingExpirationTimeSeconds));
- cacheEntry.RegisterPostEvictionCallback((key, value, reason, state) =>
- {
- RemoveSession(key.ToString());
- });
- return true;
- });
//1.先判断是否在缓存里面
if (SessionIdDict.TryGetValue(appSession.TerminalPhoneNo,out JT808UdpSession jT808UdpSession))
{
- //处理缓存
- //判断设备的终结点是否相同
- if (jT808UdpSession.Sender.Equals(appSession.Sender))
- {
- //相同 更新最后上线时间
- //每次使用最新的通道
- //将设备第一次上线时间赋值给当前上线的时间
- appSession.StartTime = jT808UdpSession.StartTime;
- SessionIdDict.TryUpdate(appSession.TerminalPhoneNo, appSession, appSession);
- }
- else
- {
- //不同 算成新设备上来并且推送通知
- SessionIdDict.TryUpdate(appSession.TerminalPhoneNo, appSession, appSession);
- jT808SessionPublishing.PublishAsync(JT808Constants.SessionOnline, appSession.TerminalPhoneNo);
- }
+ SessionIdDict.TryUpdate(appSession.TerminalPhoneNo, appSession, appSession);
}
else
{
//添加缓存
- if (SessionIdDict.TryAdd(appSession.TerminalPhoneNo, appSession))
- {
- //使用场景:
- //部标的超长待机设备,不会像正常的设备一样一直连着,可能10几分钟连上了,然后发完就关闭连接,
- //这时候想下发数据需要知道设备什么时候上线,在这边做通知最好不过了。
- //有设备关联上来可以进行通知 例如:使用Redis发布订阅
- jT808SessionPublishing.PublishAsync(JT808Constants.SessionOnline, appSession.TerminalPhoneNo);
- }
+ //使用场景:
+ //部标的超长待机设备,不会像正常的设备一样一直连着,可能10几分钟连上了,然后发完就关闭连接,
+ //这时候想下发数据需要知道设备什么时候上线,在这边做通知最好不过了。
+ //有设备关联上来可以进行通知 例如:使用Redis发布订阅
+ SessionIdDict.TryAdd(appSession.TerminalPhoneNo, appSession);
}
+ //移动是个大的内网,不跟随下发,根本就发不出来
+ //移动很多卡,存储的那个socket地址端口,有效期非常短
+ //不速度快点下发,那个socket地址端口就可能映射到别的对应卡去了
+ //所以此处采用跟随设备消息下发指令
+ jT808SessionPublishing.PublishAsync(JT808Constants.SessionOnline, appSession.TerminalPhoneNo);
}
public void Heartbeat(string terminalPhoneNo)
diff --git a/src/JT808.DotNetty.Tcp/JT808.DotNetty.Tcp.csproj b/src/JT808.DotNetty.Tcp/JT808.DotNetty.Tcp.csproj
index 9ea3f13..ba1861e 100644
--- a/src/JT808.DotNetty.Tcp/JT808.DotNetty.Tcp.csproj
+++ b/src/JT808.DotNetty.Tcp/JT808.DotNetty.Tcp.csproj
@@ -14,7 +14,7 @@
https://github.com/SmallChi/JT808DotNetty
https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
true
- 1.0.2
+ 1.0.3
diff --git a/src/JT808.DotNetty.Udp/JT808.DotNetty.Udp.csproj b/src/JT808.DotNetty.Udp/JT808.DotNetty.Udp.csproj
index d0fee8b..860cd1a 100644
--- a/src/JT808.DotNetty.Udp/JT808.DotNetty.Udp.csproj
+++ b/src/JT808.DotNetty.Udp/JT808.DotNetty.Udp.csproj
@@ -14,7 +14,7 @@
https://github.com/SmallChi/JT808DotNetty
https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
true
- 1.0.2
+ 1.0.3
@@ -22,7 +22,6 @@
-
diff --git a/src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs b/src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs
index 5a747dd..6e21558 100644
--- a/src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs
+++ b/src/JT808.DotNetty.Udp/JT808UdpDotnettyExtensions.cs
@@ -4,7 +4,6 @@ using JT808.DotNetty.Core.Handlers;
using JT808.DotNetty.Core.Jobs;
using JT808.DotNetty.Core.Services;
using JT808.DotNetty.Udp.Handlers;
-using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Internal;
@@ -19,7 +18,6 @@ namespace JT808.DotNetty.Udp
{
public static IServiceCollection AddJT808UdpHost(this IServiceCollection serviceDescriptors)
{
- serviceDescriptors.TryAddSingleton< IMemoryCache, MemoryCache>();
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
serviceDescriptors.TryAddSingleton();
@@ -28,7 +26,6 @@ namespace JT808.DotNetty.Udp
serviceDescriptors.TryAddScoped();
serviceDescriptors.AddHostedService();
serviceDescriptors.AddHostedService();
- serviceDescriptors.AddHostedService();
serviceDescriptors.AddHostedService();
return serviceDescriptors;
}
diff --git a/src/JT808.DotNetty.WebApi/JT808.DotNetty.WebApi.csproj b/src/JT808.DotNetty.WebApi/JT808.DotNetty.WebApi.csproj
index f354cdf..332036c 100644
--- a/src/JT808.DotNetty.WebApi/JT808.DotNetty.WebApi.csproj
+++ b/src/JT808.DotNetty.WebApi/JT808.DotNetty.WebApi.csproj
@@ -14,7 +14,7 @@
https://github.com/SmallChi/JT808DotNetty
https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
true
- 1.0.2
+ 1.0.3
diff --git a/src/JT808.DotNetty.WebApiClientTool/JT808.DotNetty.WebApiClientTool.csproj b/src/JT808.DotNetty.WebApiClientTool/JT808.DotNetty.WebApiClientTool.csproj
index f5f9e7c..b9769e1 100644
--- a/src/JT808.DotNetty.WebApiClientTool/JT808.DotNetty.WebApiClientTool.csproj
+++ b/src/JT808.DotNetty.WebApiClientTool/JT808.DotNetty.WebApiClientTool.csproj
@@ -14,7 +14,7 @@
https://github.com/SmallChi/JT808DotNetty
https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE
true
- 1.0.2
+ 1.0.3