Download plugin have progress status

This commit is contained in:
2024-12-25 15:05:20 +02:00
parent a754b0e5a9
commit 49fe637455
10 changed files with 146 additions and 57 deletions

View File

@@ -0,0 +1,47 @@
using System;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace DiscordBotWebUI.ServerCommunication.Sockets;
public class WebSocketClientService
{
private ClientWebSocket _webSocket;
public event Action<string> OnMessageReceived;
private readonly string _BaseUrl = "ws://localhost:5055";
public async Task ConnectAsync(string uri)
{
_webSocket = new ClientWebSocket();
await _webSocket.ConnectAsync(new Uri(_BaseUrl + uri), CancellationToken.None);
Console.WriteLine("Connected to WebSocket server.");
}
public async Task SendMessageAsync(string message)
{
var messageBytes = Encoding.UTF8.GetBytes(message);
await _webSocket.SendAsync(new ArraySegment<byte>(messageBytes), WebSocketMessageType.Text, true, CancellationToken.None);
}
public async Task ReceiveMessages()
{
byte[] buffer = new byte[102400];
while (_webSocket.State == WebSocketState.Open)
{
var result = await _webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
if (result.MessageType == WebSocketMessageType.Close)
{
await _webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closing", CancellationToken.None);
Console.WriteLine("WebSocket connection closed.");
}
else
{
string receivedMessage = Encoding.UTF8.GetString(buffer, 0, result.Count);
OnMessageReceived?.Invoke(receivedMessage);
}
}
}
}