Skip to content

Commit cbf9eae

Browse files
handle client (dis)connects of both direct and bridge
1 parent b6493e2 commit cbf9eae

File tree

5 files changed

+110
-5
lines changed

5 files changed

+110
-5
lines changed

KnockServer/InfoForm.Designer.cs

Lines changed: 60 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

KnockServer/InfoForm.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Reflection;
23
using System.Windows.Forms;
34

45
namespace KnockServer
@@ -19,6 +20,9 @@ public InfoForm()
1920
autostartCheckbox.Checked = Properties.Settings.Default.AutoStart;
2021
gameActivityCheckbox.Checked = Properties.Settings.Default.ShowActivity;
2122
connectionMethodComboBox.SelectedIndex = connectionMethodComboBox.FindStringExact(Properties.Settings.Default.ConnectionMethod);
23+
24+
versionLabel.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString();
25+
clientCountLabel.Text = CustomApplicationContext.GetClientCount().ToString()+" Client(s)";
2226
}
2327

2428

KnockServer/Program.cs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,9 @@ public class CustomApplicationContext : ApplicationContext
180180

181181
WebServiceHost hostWeb;
182182
WebSocketServer socketServer;
183-
WebSocket socketClient;
183+
static SocketServer innerSocketServer;
184+
static WebSocket socketClient;
185+
static SocketMessageHandler _messageHandler;
184186

185187
public CustomApplicationContext()
186188
{
@@ -219,9 +221,12 @@ public CustomApplicationContext()
219221

220222
var port = 16945;
221223
socketServer = new WebSocketServer(port);
222-
socketServer.AddWebSocketService<SocketServer>("/");
224+
socketServer.AddWebSocketService<SocketServer>("/", () =>
225+
{
226+
return innerSocketServer= new SocketServer();
227+
});
223228
socketServer.Start();
224-
229+
225230
Console.WriteLine("Web Service Running!");
226231
Console.WriteLine(socketServer.Address + ":" + port);
227232

@@ -246,7 +251,7 @@ public CustomApplicationContext()
246251
Origin ="ws://"+Properties.Settings.Default.ServerId+".servers.vrknock.app:16945"
247252
};
248253

249-
var _messageHandler = new SocketMessageHandler()
254+
_messageHandler = new SocketMessageHandler()
250255
{
251256
Send = (s,t) =>
252257
{
@@ -300,6 +305,18 @@ public CustomApplicationContext()
300305
trayIcon.ShowBalloonTip(2000, "VRKnock", "Server Running!", ToolTipIcon.Info);
301306
}
302307

308+
public static int GetClientCount()
309+
{
310+
if (Properties.Settings.Default.ConnectionMethod == "DIRECT" && innerSocketServer != null)
311+
{
312+
return innerSocketServer.clientCount;
313+
}else if (Properties.Settings.Default.ConnectionMethod == "BRIDGE" && _messageHandler != null)
314+
{
315+
return _messageHandler.clientCount;
316+
}
317+
318+
return 0;
319+
}
303320

304321
void Info(object sender, EventArgs e)
305322
{

KnockServer/SocketMessageHandler.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,29 @@ namespace KnockServer
77
{
88
public class SocketMessageHandler
99
{
10+
public int clientCount = 0;
11+
1012
public void OnMessage(MessageEventArgs e)
1113
{
1214
Console.WriteLine(e.Data);
1315
Request request = ParseRequest(e.Data);
1416

17+
if (request._state != null)
18+
{
19+
if (request._state == "CONNECT")
20+
{
21+
clientCount++;
22+
}
23+
24+
if (request._state == "DISCONNECT")
25+
{
26+
clientCount--;
27+
}
28+
29+
Console.WriteLine("ClientCount: "+clientCount);
30+
return;
31+
}
32+
1533
Status status = null;
1634
switch (request.action)
1735
{
@@ -149,6 +167,7 @@ protected virtual string SendImpl(string text, string target)
149167

150168
public class Request
151169
{
170+
public string _state { get; set; }
152171
public string action { get; set; }
153172
public string code { get; set; }
154173
public string message { get; set; }

KnockServer/SocketServer.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ public class SocketServer : WebSocketBehavior
1111
{
1212
private SocketMessageHandler _messageHandler;
1313

14+
public int clientCount = 0;
15+
1416
public SocketServer()
1517
{
1618
_messageHandler = new SocketMessageHandler()
@@ -28,12 +30,16 @@ protected override void OnClose(CloseEventArgs e)
2830
{
2931
base.OnClose(e);
3032
Console.WriteLine("A Client Disconnected.");
33+
clientCount--;
34+
Console.WriteLine("ClientCount: "+clientCount);
3135
}
3236

3337
protected override void OnOpen()
3438
{
3539
base.OnOpen();
3640
Console.WriteLine("New Client Connected!");
41+
clientCount++;
42+
Console.WriteLine("ClientCount: "+clientCount);
3743
}
3844

3945

0 commit comments

Comments
 (0)