Как обрабатывать повторное подключение WebSocket к RealMarketAPI на C#?C#

Место общения программистов C#
Anonymous
Как обрабатывать повторное подключение WebSocket к RealMarketAPI на C#?

Сообщение Anonymous »

Я использую RealMarketAPI WebSocket для потоковой передачи данных о ценах, но когда соединение обрывается, оно не подключается должным образом.
Вот мой код:

Код: Выделить всё

using System;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

class Program
{
private static readonly Uri socketUri =
new Uri("wss://api.realmarketapi.com/price?apiKey=***&symbolCode=XAUUSD&timeFrame=H1");

static async Task Main()
{
while (true)
{
using (var ws = new ClientWebSocket())
{
await ws.ConnectAsync(socketUri, CancellationToken.None);
await ReceiveLoop(ws);
}
await Task.Delay(5000);
}
}

private static async Task ReceiveLoop(ClientWebSocket ws)
{
var buffer = new byte[4096];

while (ws.State == WebSocketState.Open)
{
var result = await ws.ReceiveAsync(new ArraySegment(buffer), CancellationToken.None);

if (result.MessageType == WebSocketMessageType.Close)
{
Console.WriteLine("Connection closed by server");
await ws.CloseAsync(WebSocketCloseStatus.NormalClosure, "Closing", CancellationToken.None);
break;
}

var message = Encoding.UTF8.GetString(buffer, 0, result.Count);
Console.WriteLine($"Received: {message}");
}
}
}
Как правильно обрабатывать повторное подключение или повторные попытки?

Вернуться в «C#»