“ ClientWebSocket”远程方在未完成关闭握手的情况下关闭了WebSocket连接。“

时间:2020-10-14 22:29:18

标签: c# sockets web websocket twelvedata

我正在尝试实现WebSocket,但是每次尝试读取它时,都会引发“远程方在未完成关闭握手的情况下关闭了WebSocket连接”。错误。

这是我的代码:

string url = "wss://ws.url.com/v1/func/func2";
var param = new Dictionary<string, string>()
{
    { "apikey", "apikey" }
};
Uri uri = new Uri(QueryHelpers.AddQueryString(url, param));
CancellationToken token = CancellationToken.None;

using (var client = new ClientWebSocket() { Options = { KeepAliveInterval = new TimeSpan(0, 0, 3, 0) } })
{
    client.ConnectAsync(uri, token).Wait();
    Subscribe(client, token).Wait();
}

public static async Task Subscribe(ClientWebSocket client, CancellationToken token)
{
    StringBuilder message = new StringBuilder("{\"action\":\"subscribe\",\"params\":{\"param\":\"value\"}}");
    Console.WriteLine("Subscribe : " + message.ToString());

    var sendBuffer = new ArraySegment<byte>(Encoding.UTF8.GetBytes(message.ToString()));
    await client.SendAsync(sendBuffer, WebSocketMessageType.Text, true, token);

    ArraySegment<byte> receivedBytes = new ArraySegment<byte>(new byte[1024]);
    WebSocketReceiveResult result = await client.ReceiveAsync(receivedBytes, token);
    Console.WriteLine(Encoding.UTF8.GetString(receivedBytes.Array, 0, result.Count));
}

该连接一直保持打开状态,直到ReadAsync终止,然后我收到“远程方未完成关闭握手就关闭了WebSocket连接”的消息。错误。我搜寻了互联网,但找不到解决方案。订阅后我应该会收到一条消息,但是它不起作用,并且看起来互联网对此了解很多。

WebSocket服务器是非常流行的TwelveData金融API,因此有望正常运行。

由于异常,我根本无法读取任何数据。

1 个答案:

答案 0 :(得分:3)

订阅仅限于主键。确保使用其中之一。

相关问题