Skip to content

Commit b36a884

Browse files
committed
add hub demo
1 parent e72fe98 commit b36a884

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed

SDK.CSharp.Example/Http/HubDemo.cs

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
using Microsoft.Extensions.Logging;
2+
using OpenShock.SDK.CSharp;
3+
using OpenShock.SDK.CSharp.Hub;
4+
using OpenShock.SDK.CSharp.Models;
5+
using Serilog;
6+
7+
namespace SDK.CSharp.Example.Http;
8+
9+
public sealed class HubDemo : IExample
10+
{
11+
private readonly ExampleConfig _config;
12+
13+
public HubDemo(ExampleConfig config)
14+
{
15+
_config = config;
16+
}
17+
18+
19+
public async Task Start()
20+
{
21+
var apiClient = new OpenShockApiClient(new ApiClientOptions
22+
{
23+
Token = _config.ApiToken
24+
});
25+
26+
var openshockSignalrHub = new OpenShockHubClient();
27+
28+
await openshockSignalrHub.Setup(new HubClientOptions
29+
{
30+
Token = _config.ApiToken,
31+
Server = _config.ApiUrl,
32+
ConfigureLogging = builder =>
33+
{
34+
builder.ClearProviders();
35+
builder.AddSerilog();
36+
}
37+
});
38+
39+
await using var onWelcomeSub = await openshockSignalrHub.OnWelcome.SubscribeAsync(async connectionId =>
40+
{
41+
Console.WriteLine($"OnWelcome to OpenShock Hub with connection ID: {connectionId}");
42+
await Task.Delay(10000);
43+
});
44+
45+
await using var onConnectedSub = await openshockSignalrHub.OnConnected.SubscribeAsync(hubId =>
46+
{
47+
Console.WriteLine($"OnConnected to OpenShock Hub with ID: {hubId}");
48+
return Task.CompletedTask;
49+
});
50+
51+
await using var onReconnected = await openshockSignalrHub.OnReconnected.SubscribeAsync(hubId =>
52+
{
53+
Console.WriteLine($"OnReconnected from OpenShock Hub with ID: {hubId}");
54+
return Task.CompletedTask;
55+
});
56+
57+
await using var onReconnectingSub = await openshockSignalrHub.OnReconnecting.SubscribeAsync(exception =>
58+
{
59+
Console.WriteLine($"OnReconnecting to OpenShock Hub due to: {exception?.Message}");
60+
return Task.CompletedTask;
61+
});
62+
63+
64+
await using var onLogSub = await openshockSignalrHub.OnLog.SubscribeAsync(logEvent =>
65+
{
66+
Console.WriteLine($"OnLog: {logEvent}");
67+
return Task.CompletedTask;
68+
});
69+
70+
await using var onHubUpdateSub = await openshockSignalrHub.OnHubUpdate.SubscribeAsync(hubUpdateEventArgs =>
71+
{
72+
Console.WriteLine($"OnHubUpdate: {hubUpdateEventArgs}");
73+
return Task.CompletedTask;
74+
});
75+
76+
await using var onHubStatusSub = await openshockSignalrHub.OnHubStatus.SubscribeAsync(hubOnlineStates =>
77+
{
78+
Console.WriteLine($"OnHubStatus: {string.Join(", ", hubOnlineStates)}");
79+
return Task.CompletedTask;
80+
});
81+
82+
await openshockSignalrHub.StartAsync();
83+
84+
Console.WriteLine("OpenShock Hub client started. Press Enter to send a control command... type any character to exit.");
85+
while (true)
86+
{
87+
if(!string.IsNullOrWhiteSpace(Console.ReadLine()))
88+
{
89+
Console.WriteLine("Exiting OpenShock Hub demo.");
90+
break;
91+
}
92+
93+
await openshockSignalrHub.Control(_config.Shockers.Select(x => new Control
94+
{
95+
Id = x,
96+
Type = ControlType.Vibrate,
97+
Intensity = 50,
98+
Duration = 1000
99+
}));
100+
}
101+
}
102+
}

0 commit comments

Comments
 (0)