Skip to content

Commit ab1e437

Browse files
committed
Implement smarter reconnection logic
1 parent b36a884 commit ab1e437

File tree

4 files changed

+22
-4
lines changed

4 files changed

+22
-4
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using LucHeart.WebsocketLibrary.Reconnection;
2+
3+
namespace OpenShock.SDK.CSharp.Live;
4+
5+
internal sealed class LiveControlReconnectionPolicy : IReconnectPolicy
6+
{
7+
public TimeSpan NextReconnectionDelay(ReconnectionContext reconnectionContext)
8+
{
9+
return reconnectionContext.Attempt switch
10+
{
11+
> 10 => TimeSpan.FromSeconds(30),
12+
> 3 => TimeSpan.FromSeconds(10),
13+
> 1 => TimeSpan.FromSeconds(5),
14+
<= 1 => TimeSpan.FromMilliseconds(0),
15+
};
16+
}
17+
}

SDK.CSharp.Live/OpenShockLiveControlClient.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,15 +182,16 @@ private OpenShockLiveControlClient(Guid hubId,
182182
private WebsocketClientOptions GetWebsocketOptions(string authToken, ApiClientOptions.ProgramInfo? programInfo,
183183
IEnumerable<KeyValuePair<string, string>>? headers, ILogger? logger)
184184
{
185-
var options = new WebsocketClientOptions()
185+
var options = new WebsocketClientOptions
186186
{
187187
JsonSerializerOptions = JsonSerializerOptions,
188188
Headers =
189189
{
190190
{ "OpenShockToken", authToken },
191191
{ "User-Agent", GetUserAgent(programInfo) }
192192
},
193-
Logger = logger
193+
Logger = logger,
194+
ReconnectPolicy = new LiveControlReconnectionPolicy()
194195
};
195196
if (headers is null) return options;
196197

SDK.CSharp.Live/SDK.CSharp.Live.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
</PropertyGroup>
77

88
<ItemGroup>
9-
<PackageReference Include="LucHeart.WebsocketLibrary" Version="1.0.1" />
9+
<PackageReference Include="LucHeart.WebsocketLibrary" Version="1.1.0" />
1010
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.6" />
1111
<PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="3.0.1" />
1212
<PackageReference Condition=" '$(Configuration)' == 'Release' " Include="OpenShock.SDK.CSharp" Version="$(Version)" />

Shared.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<PropertyGroup>
33
<Company>OpenShock</Company>
44
<Product>$(Company).$(MSBuildProjectName)</Product>
5-
<Version>0.0.37</Version>
5+
<Version>0.0.38</Version>
66

77
<Title>$(Product)</Title>
88
<Authors>OpenShock</Authors>

0 commit comments

Comments
 (0)