-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathWebSocketsServer.cs
91 lines (84 loc) · 2.5 KB
/
WebSocketsServer.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
using System;
using System.Diagnostics;
using WebSocketSharp;
using WebSocketSharp.Server;
namespace BasicTwitchSoundPlayer
{
public class WebSocketsListener
{
#region End Points logic
public class AdjustVolume : WebSocketBehavior
{
protected override void OnMessage(MessageEventArgs e)
{
if (int.TryParse(e.Data, out var change))
{
var val = Mathf.Clamp(MainForm.Instance.GetVolume() + change, 0, 100);
MainForm.Instance.SetVolume(val);
}
else
MainForm.Instance.ThreadSafeAddPreviewText("Failed to parse", LineType.WebSocket);
}
}
public class SetPauseRedeems : WebSocketBehavior
{
protected override void OnMessage(MessageEventArgs e)
{
if (e.Data.ToLower() == "true")
{
VoiceModHandling.GetInstance().SetPauseRedeems(true);
MainForm.Instance.ThreadSafeAddPreviewText("Paused redeems", LineType.WebSocket);
}
else if (e.Data.ToLower() == "false")
{
VoiceModHandling.GetInstance().SetPauseRedeems(false);
MainForm.Instance.ThreadSafeAddPreviewText("Unpaused redeems", LineType.WebSocket);
}
else
MainForm.Instance.ThreadSafeAddPreviewText("Failed to parse", LineType.WebSocket);
}
}
public class SetVolume : WebSocketBehavior
{
protected override void OnMessage(MessageEventArgs e)
{
if (int.TryParse(e.Data, out var change))
MainForm.Instance.SetVolume(change);
else
MainForm.Instance.ThreadSafeAddPreviewText("Failed to parse", LineType.WebSocket);
}
}
#endregion
private WebSocketServer m_server;
public void Start()
{
if (m_server == null)
{
try
{
MainForm.Instance.ThreadSafeAddPreviewText("Starting web server", LineType.WebSocket);
m_server = new WebSocketServer(PrivateSettings.GetInstance().WebSocketsServerPort);
m_server.AddWebSocketService<AdjustVolume>("/AdjustVolume");
m_server.AddWebSocketService<SetVolume>("/SetVolume");
m_server.AddWebSocketService<SetPauseRedeems>("/SetPauseRedeems");
m_server.Start();
MainForm.Instance.ThreadSafeAddPreviewText($"WebSocket started - listening on {m_server.Address}:{m_server.Port}", LineType.WebSocket);
}
catch (Exception e)
{
MainForm.Instance.ThreadSafeAddPreviewText($"Failed to open WebSocket server - {e.Message}", LineType.WebSocket);
return;
}
}
}
public void Stop()
{
if (m_server != null)
{
m_server.Stop(CloseStatusCode.Normal, "Intentional shutdown");
System.Threading.Thread.Sleep(200);
m_server = null;
}
}
}
}