websocket close하다가 null되는 현상처리(2일째에서 발생)

This commit is contained in:
kyh
2023-08-01 11:19:57 +09:00
parent 67e03bab27
commit 1506e62f8c

View File

@@ -217,22 +217,22 @@ namespace Million.Manager
while (Flag)
{
ClientWebSocket webSocket = new ClientWebSocket();
var cancelToken = CancellationToken.None;
try
{
await webSocket.ConnectAsync(new Uri(WebSocketUrl), CancellationToken.None);
await webSocket.ConnectAsync(new Uri(WebSocketUrl), cancelToken);
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() } });
await SendMessage(webSocket, JsonConvert.SerializeObject(dic));
// 데이터 수신을 위한 반복문 시작
while (webSocket.State == WebSocketState.Open && Flag)
{
byte[] buffer = new byte[1024 * 10];
WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), cancelToken);
// 수신한 데이터 처리
message = System.Text.Encoding.UTF8.GetString(buffer, 0, result.Count);
@@ -265,11 +265,20 @@ namespace Million.Manager
finally
{
if (webSocket.State == WebSocketState.Open)
{
await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, webSocket.CloseStatusDescription, CancellationToken.None);
}
webSocket.Dispose();
{
try
{
await webSocket.CloseAsync(webSocket.CloseStatus.Value, webSocket.CloseStatusDescription, cancelToken);
}
catch (Exception e)
{
LogManager.WriteLog(e.Message + "\r\n오류 메세지 : " + message);
}
if(webSocket != null)
webSocket.Dispose();
webSocket = null;
}
}
}
}