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