@@ -1,2 +1,11 @@ | |||||
# JT1078DotNetty | # JT1078DotNetty | ||||
JT1078DotNetty | JT1078DotNetty | ||||
## NuGet安装 | |||||
| Package Name | Version | Downloads | | |||||
| --------------------- | -------------------------------------------------- | --------------------------------------------------- | | |||||
| Install-Package JT1078.DotNetty.Core |  |  | | |||||
| Install-Package JT1078.DotNetty.Tcp |  |  | | |||||
| Install-Package JT1078.DotNetty.Udp |  |  | |
@@ -28,6 +28,7 @@ namespace JT1078.DotNetty.Core.Impl | |||||
this.optionsMonitor = optionsMonitor; | this.optionsMonitor = optionsMonitor; | ||||
timer = new System.Timers.Timer(10000); | timer = new System.Timers.Timer(10000); | ||||
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); | timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); | ||||
timer.AutoReset = false; | |||||
timer.Start(); | timer.Start(); | ||||
InitialDispatcherClient(); | InitialDispatcherClient(); | ||||
} | } | ||||
@@ -47,6 +48,8 @@ namespace JT1078.DotNetty.Core.Impl | |||||
else | else | ||||
{ | { | ||||
logger.LogError($"{item}链接已关闭"); | logger.LogError($"{item}链接已关闭"); | ||||
item.Value.Close(); | |||||
item.Value.Dispose(); | |||||
channeldic.TryRemove(item.Key, out _); | channeldic.TryRemove(item.Key, out _); | ||||
reconnectionQueue.Enqueue(item.Key); | reconnectionQueue.Enqueue(item.Key); | ||||
} | } | ||||
@@ -54,6 +57,8 @@ namespace JT1078.DotNetty.Core.Impl | |||||
catch (Exception ex) | catch (Exception ex) | ||||
{ | { | ||||
logger.LogError($"{item}发送数据出现异常:{ex}"); | logger.LogError($"{item}发送数据出现异常:{ex}"); | ||||
item.Value.Close(); | |||||
item.Value.Dispose(); | |||||
reconnectionQueue.Enqueue(item.Key); | reconnectionQueue.Enqueue(item.Key); | ||||
channeldic.TryRemove(item.Key, out _); | channeldic.TryRemove(item.Key, out _); | ||||
} | } | ||||
@@ -83,12 +88,25 @@ namespace JT1078.DotNetty.Core.Impl | |||||
{ | { | ||||
timer.Stop(); | timer.Stop(); | ||||
Thread.CurrentThread.IsBackground = true; | Thread.CurrentThread.IsBackground = true; | ||||
var ip = reconnectionQueue.Dequeue(); | |||||
if (!string.IsNullOrEmpty(ip)) | |||||
try | |||||
{ | { | ||||
AddRemoteServsers(new List<string>() { ip }); | |||||
if (reconnectionQueue.Count > 0) | |||||
{ | |||||
var ip = reconnectionQueue.Dequeue(); | |||||
if (!string.IsNullOrEmpty(ip)) | |||||
{ | |||||
AddRemoteServsers(new List<string>() { ip }); | |||||
} | |||||
} | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
logger.LogError(ex, ""); | |||||
} | |||||
finally | |||||
{ | |||||
timer.Start(); | |||||
} | } | ||||
timer.Start(); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -140,7 +158,6 @@ namespace JT1078.DotNetty.Core.Impl | |||||
/// <summary> | /// <summary> | ||||
/// 动态添加远程服务器 | /// 动态添加远程服务器 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="bootstrap"></param> | |||||
/// <param name="lastRemoteServers"></param> | /// <param name="lastRemoteServers"></param> | ||||
private void AddRemoteServsers(List<string> lastRemoteServers) | private void AddRemoteServsers(List<string> lastRemoteServers) | ||||
{ | { | ||||
@@ -157,6 +174,7 @@ namespace JT1078.DotNetty.Core.Impl | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
client.Dispose(); | |||||
reconnectionQueue.Enqueue(item); | reconnectionQueue.Enqueue(item); | ||||
} | } | ||||
} | } | ||||
@@ -1,10 +1,13 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | <Project Sdk="Microsoft.NET.Sdk"> | ||||
<Import Project="..\SharedProperties.props" /> | |||||
<PropertyGroup> | <PropertyGroup> | ||||
<TargetFramework>netstandard2.0</TargetFramework> | <TargetFramework>netstandard2.0</TargetFramework> | ||||
<PackageId>JT1078.DotNetty.Core</PackageId> | |||||
<Product>JT1078.DotNetty.Core</Product> | |||||
<Description>基于DotNetty实现的JT1078DotNetty的核心库</Description> | |||||
<PackageReleaseNotes>基于DotNetty实现的JT1078DotNetty的核心库</PackageReleaseNotes> | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="DotNetty.Handlers" Version="0.6.0" /> | <PackageReference Include="DotNetty.Handlers" Version="0.6.0" /> | ||||
<PackageReference Include="DotNetty.Transport.Libuv" Version="0.6.0" /> | <PackageReference Include="DotNetty.Transport.Libuv" Version="0.6.0" /> | ||||
@@ -16,5 +19,8 @@ | |||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" /> | <PackageReference Include="Newtonsoft.Json" Version="12.0.2" /> | ||||
<PackageReference Include="Microsoft.Extensions.Options" Version="2.2.0" /> | <PackageReference Include="Microsoft.Extensions.Options" Version="2.2.0" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | |||||
<Folder Include="Properties\" /> | |||||
</ItemGroup> | |||||
</Project> | </Project> |
@@ -1,7 +1,15 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | <Project Sdk="Microsoft.NET.Sdk"> | ||||
<Import Project="..\SharedProperties.props" /> | |||||
<PropertyGroup> | <PropertyGroup> | ||||
<TargetFramework>netstandard2.0</TargetFramework> | <TargetFramework>netstandard2.0</TargetFramework> | ||||
<PackageId>JT1078.DotNetty.Tcp</PackageId> | |||||
<Product>JT1078.DotNetty.Tcp</Product> | |||||
<Description>基于DotNetty实现的JT1078DotNetty的Tcp服务</Description> | |||||
<PackageReleaseNotes>基于DotNetty实现的JT1078DotNetty的Tcp服务</PackageReleaseNotes> | |||||
<RepositoryUrl>https://github.com/SmallChi/JT1078DotNetty</RepositoryUrl> | |||||
<PackageProjectUrl>https://github.com/SmallChi/JT1078DotNetty</PackageProjectUrl> | |||||
<licenseUrl>https://github.com/SmallChi/JT1078DotNetty/blob/master/LICENSE</licenseUrl> | |||||
<license>https://github.com/SmallChi/JT1078DotNetty/blob/master/LICENSE</license> | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -18,5 +26,4 @@ | |||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" /> | <PackageReference Include="Newtonsoft.Json" Version="12.0.2" /> | ||||
<PackageReference Include="Microsoft.Extensions.Options" Version="2.2.0" /> | <PackageReference Include="Microsoft.Extensions.Options" Version="2.2.0" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
</Project> | </Project> |
@@ -1,7 +1,11 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | |||||
<Project Sdk="Microsoft.NET.Sdk"> | |||||
<Import Project="..\SharedProperties.props" /> | |||||
<PropertyGroup> | <PropertyGroup> | ||||
<TargetFramework>netstandard2.0</TargetFramework> | <TargetFramework>netstandard2.0</TargetFramework> | ||||
<PackageId>JT1078.DotNetty.Udp</PackageId> | |||||
<Product>JT1078.DotNetty.Udp</Product> | |||||
<Description>基于DotNetty实现的JT1078DotNetty的Udp服务</Description> | |||||
<PackageReleaseNotes>基于DotNetty实现的JT1078DotNetty的Udp服务</PackageReleaseNotes> | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
@@ -11,6 +11,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT1078.DotNetty.TestHosting | |||||
EndProject | EndProject | ||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT1078.DotNetty.Udp", "JT1078.DotNetty.Udp\JT1078.DotNetty.Udp.csproj", "{6405D7FA-3B6E-4545-827E-BA13EB5BB268}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT1078.DotNetty.Udp", "JT1078.DotNetty.Udp\JT1078.DotNetty.Udp.csproj", "{6405D7FA-3B6E-4545-827E-BA13EB5BB268}" | ||||
EndProject | EndProject | ||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{1C26DF6A-2978-46B7-B921-BB7776CC6EE8}" | |||||
EndProject | |||||
Global | Global | ||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
Debug|Any CPU = Debug|Any CPU | Debug|Any CPU = Debug|Any CPU | ||||
@@ -37,6 +39,9 @@ Global | |||||
GlobalSection(SolutionProperties) = preSolution | GlobalSection(SolutionProperties) = preSolution | ||||
HideSolutionNode = FALSE | HideSolutionNode = FALSE | ||||
EndGlobalSection | EndGlobalSection | ||||
GlobalSection(NestedProjects) = preSolution | |||||
{DCCA6BB7-C2B5-490A-B43F-C28ABEA922D7} = {1C26DF6A-2978-46B7-B921-BB7776CC6EE8} | |||||
EndGlobalSection | |||||
GlobalSection(ExtensibilityGlobals) = postSolution | GlobalSection(ExtensibilityGlobals) = postSolution | ||||
SolutionGuid = {07ED058A-2CEB-43FD-8478-7EEC7E56F868} | SolutionGuid = {07ED058A-2CEB-43FD-8478-7EEC7E56F868} | ||||
EndGlobalSection | EndGlobalSection | ||||
@@ -0,0 +1,19 @@ | |||||
<Project> | |||||
<PropertyGroup> | |||||
<LangVersion>7.3</LangVersion> | |||||
<Copyright>Copyright 2019.</Copyright> | |||||
<Authors>SmallChi(Koike)</Authors> | |||||
<RepositoryUrl>https://github.com/SmallChi/JT1078DotNetty</RepositoryUrl> | |||||
<PackageProjectUrl>https://github.com/SmallChi/JT1078DotNetty</PackageProjectUrl> | |||||
<licenseUrl>https://github.com/SmallChi/JT1078DotNetty/blob/master/LICENSE</licenseUrl> | |||||
<license>https://github.com/SmallChi/JT1078DotNetty/blob/master/LICENSE</license> | |||||
<GeneratePackageOnBuild>false</GeneratePackageOnBuild> | |||||
<Version>1.0.0-preview1</Version> | |||||
<SignAssembly>false</SignAssembly> | |||||
<PackageLicenseFile>LICENSE</PackageLicenseFile> | |||||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> | |||||
</PropertyGroup> | |||||
<ItemGroup> | |||||
<None Include="..\..\LICENSE" Pack="true" PackagePath="" /> | |||||
</ItemGroup> | |||||
</Project> |