사용자가 의도치 않게 websocket 종료 될경우 다시 실행되도록 함
This commit is contained in:
@@ -210,48 +210,51 @@ namespace Million.Manager
|
||||
private async void ThreadEventAsync()
|
||||
{
|
||||
string WebSocketUrl = "wss://api.upbit.com/websocket/v1";
|
||||
|
||||
ClientWebSocket webSocket = new ClientWebSocket();
|
||||
|
||||
try
|
||||
realtimeConclusions.Clear();
|
||||
while (Flag)
|
||||
{
|
||||
await webSocket.ConnectAsync(new Uri(WebSocketUrl), CancellationToken.None);
|
||||
var dic = new List<Dictionary<string, object>>();
|
||||
dic.Add(new Dictionary<string, object>() { { "ticket", "test" } });
|
||||
dic.Add(new Dictionary<string, object>() { { "type", "trade" }, { "codes", CommonProperty.recentlyMarketOfPlaceList.Where(t=>t.CoinFullName.Contains("KRW-")).Select(t=>t.CoinFullName).ToList() } });
|
||||
ClientWebSocket webSocket = new ClientWebSocket();
|
||||
|
||||
await SendMessage(webSocket, JsonConvert.SerializeObject(dic));
|
||||
|
||||
|
||||
// 데이터 수신을 위한 반복문 시작
|
||||
while (webSocket.State == WebSocketState.Open && Flag)
|
||||
try
|
||||
{
|
||||
byte[] buffer = new byte[1024 * 10];
|
||||
WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
|
||||
|
||||
// 수신한 데이터 처리
|
||||
var message = System.Text.Encoding.UTF8.GetString(buffer, 0, result.Count);
|
||||
await webSocket.ConnectAsync(new Uri(WebSocketUrl), CancellationToken.None);
|
||||
var dic = new List<Dictionary<string, object>>();
|
||||
dic.Add(new Dictionary<string, object>() { { "ticket", "test" } });
|
||||
dic.Add(new Dictionary<string, object>() { { "type", "trade" }, { "codes", CommonProperty.recentlyMarketOfPlaceList.Where(t => t.CoinFullName.Contains("KRW-")).Select(t => t.CoinFullName).ToList() } });
|
||||
|
||||
if (!DataManager.ValidateJSON(message)) continue;
|
||||
|
||||
var data = JsonConvert.DeserializeObject<RealtimeConclusion>(message);
|
||||
await SendMessage(webSocket, JsonConvert.SerializeObject(dic));
|
||||
|
||||
lock (obj)
|
||||
|
||||
// 데이터 수신을 위한 반복문 시작
|
||||
while (webSocket.State == WebSocketState.Open && Flag)
|
||||
{
|
||||
realtimeConclusions.Add(data);
|
||||
byte[] buffer = new byte[1024 * 10];
|
||||
WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
|
||||
|
||||
// 수신한 데이터 처리
|
||||
var message = System.Text.Encoding.UTF8.GetString(buffer, 0, result.Count);
|
||||
|
||||
if (!DataManager.ValidateJSON(message)) continue;
|
||||
|
||||
var data = JsonConvert.DeserializeObject<RealtimeConclusion>(message);
|
||||
|
||||
lock (obj)
|
||||
{
|
||||
realtimeConclusions.Add(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (webSocket.State == WebSocketState.Open)
|
||||
await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "WebSocket 연결 종료", CancellationToken.None);
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogManager.WriteLog(ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (webSocket.State == WebSocketState.Open)
|
||||
await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "WebSocket 연결 종료", CancellationToken.None);
|
||||
|
||||
webSocket.Dispose();
|
||||
webSocket.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user