mirror of
https://github.com/Myxelium/BeetleWire_UI.git
synced 2026-07-09 05:25:08 +00:00
Init
This commit is contained in:
49
Services/ConnectionManager.cs
Normal file
49
Services/ConnectionManager.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
using System;
|
||||
using System.Net;
|
||||
using System.Net.WebSockets;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BeetleWire_UI.Services;
|
||||
|
||||
public class ConnectionManager
|
||||
{
|
||||
private static ConnectionManager _instance;
|
||||
public static ConnectionManager Instance => _instance ??= new ConnectionManager();
|
||||
|
||||
public HttpListener ServerListener { get; private set; }
|
||||
public ClientWebSocket ClientSocket { get; private set; }
|
||||
|
||||
private ConnectionManager() { }
|
||||
|
||||
public void StartServer(string prefix)
|
||||
{
|
||||
if (ServerListener == null)
|
||||
{
|
||||
ServerListener = new HttpListener();
|
||||
ServerListener.Prefixes.Add(prefix);
|
||||
ServerListener.Start();
|
||||
}
|
||||
}
|
||||
|
||||
public void StopServer()
|
||||
{
|
||||
ServerListener?.Stop();
|
||||
ServerListener = null;
|
||||
}
|
||||
|
||||
public async Task ConnectClientAsync(Uri uri, CancellationToken token)
|
||||
{
|
||||
if (ClientSocket == null)
|
||||
{
|
||||
ClientSocket = new ClientWebSocket();
|
||||
await ClientSocket.ConnectAsync(uri, token);
|
||||
}
|
||||
}
|
||||
|
||||
public void DisconnectClient()
|
||||
{
|
||||
ClientSocket?.Dispose();
|
||||
ClientSocket = null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user