@@ -1,2 +1,11 @@ | |||
# 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; | |||
timer = new System.Timers.Timer(10000); | |||
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); | |||
timer.AutoReset = false; | |||
timer.Start(); | |||
InitialDispatcherClient(); | |||
} | |||
@@ -47,6 +48,8 @@ namespace JT1078.DotNetty.Core.Impl | |||
else | |||
{ | |||
logger.LogError($"{item}链接已关闭"); | |||
item.Value.Close(); | |||
item.Value.Dispose(); | |||
channeldic.TryRemove(item.Key, out _); | |||
reconnectionQueue.Enqueue(item.Key); | |||
} | |||
@@ -54,6 +57,8 @@ namespace JT1078.DotNetty.Core.Impl | |||
catch (Exception ex) | |||
{ | |||
logger.LogError($"{item}发送数据出现异常:{ex}"); | |||
item.Value.Close(); | |||
item.Value.Dispose(); | |||
reconnectionQueue.Enqueue(item.Key); | |||
channeldic.TryRemove(item.Key, out _); | |||
} | |||
@@ -83,12 +88,25 @@ namespace JT1078.DotNetty.Core.Impl | |||
{ | |||
timer.Stop(); | |||
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> | |||
@@ -140,7 +158,6 @@ namespace JT1078.DotNetty.Core.Impl | |||
/// <summary> | |||
/// 动态添加远程服务器 | |||
/// </summary> | |||
/// <param name="bootstrap"></param> | |||
/// <param name="lastRemoteServers"></param> | |||
private void AddRemoteServsers(List<string> lastRemoteServers) | |||
{ | |||
@@ -157,6 +174,7 @@ namespace JT1078.DotNetty.Core.Impl | |||
} | |||
else | |||
{ | |||
client.Dispose(); | |||
reconnectionQueue.Enqueue(item); | |||
} | |||
} | |||
@@ -1,10 +1,13 @@ | |||
<Project Sdk="Microsoft.NET.Sdk"> | |||
<Import Project="..\SharedProperties.props" /> | |||
<PropertyGroup> | |||
<TargetFramework>netstandard2.0</TargetFramework> | |||
<PackageId>JT1078.DotNetty.Core</PackageId> | |||
<Product>JT1078.DotNetty.Core</Product> | |||
<Description>基于DotNetty实现的JT1078DotNetty的核心库</Description> | |||
<PackageReleaseNotes>基于DotNetty实现的JT1078DotNetty的核心库</PackageReleaseNotes> | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<PackageReference Include="DotNetty.Handlers" 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="Microsoft.Extensions.Options" Version="2.2.0" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<Folder Include="Properties\" /> | |||
</ItemGroup> | |||
</Project> |
@@ -1,7 +1,15 @@ | |||
<Project Sdk="Microsoft.NET.Sdk"> | |||
<Import Project="..\SharedProperties.props" /> | |||
<PropertyGroup> | |||
<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> | |||
<ItemGroup> | |||
@@ -18,5 +26,4 @@ | |||
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" /> | |||
<PackageReference Include="Microsoft.Extensions.Options" Version="2.2.0" /> | |||
</ItemGroup> | |||
</Project> |
@@ -1,7 +1,11 @@ | |||
<Project Sdk="Microsoft.NET.Sdk"> | |||
<Project Sdk="Microsoft.NET.Sdk"> | |||
<Import Project="..\SharedProperties.props" /> | |||
<PropertyGroup> | |||
<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> | |||
<ItemGroup> | |||
@@ -11,6 +11,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT1078.DotNetty.TestHosting | |||
EndProject | |||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT1078.DotNetty.Udp", "JT1078.DotNetty.Udp\JT1078.DotNetty.Udp.csproj", "{6405D7FA-3B6E-4545-827E-BA13EB5BB268}" | |||
EndProject | |||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{1C26DF6A-2978-46B7-B921-BB7776CC6EE8}" | |||
EndProject | |||
Global | |||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||
Debug|Any CPU = Debug|Any CPU | |||
@@ -37,6 +39,9 @@ Global | |||
GlobalSection(SolutionProperties) = preSolution | |||
HideSolutionNode = FALSE | |||
EndGlobalSection | |||
GlobalSection(NestedProjects) = preSolution | |||
{DCCA6BB7-C2B5-490A-B43F-C28ABEA922D7} = {1C26DF6A-2978-46B7-B921-BB7776CC6EE8} | |||
EndGlobalSection | |||
GlobalSection(ExtensibilityGlobals) = postSolution | |||
SolutionGuid = {07ED058A-2CEB-43FD-8478-7EEC7E56F868} | |||
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> |