WebSocketSharp C# StreamReader?

问题描述

我有一个问题,我想知道如何使用 StreamReader 读取 WebSocket 响应?

        //WebSocket
        WebSocket ws = new WebSocket("wss://stream.binance.com:9443/api/v3/userDataStream");
        ws.Connect();

这样做:https://github.com/binance/binance-spot-api-docs/blob/master/user-data-stream.md#create-a-listenkey

我先谢谢你

解决方法

我找到了一些示例,可以从带有 WebSocketStreamReader 接收数据。

 public async Task<string> Receive()
    {
        byte[] buffer = new byte[1024];
        WebSocketReceiveResult result = await client.ReceiveAsync(new ArraySegment<byte>(buffer),CancellationToken.None);//ToDo built in CancellationToken

        if (result.MessageType == WebSocketMessageType.Close)
        {
            return "abort";
        }

        using (MemoryStream stream = new MemoryStream())
        {
            stream.Write(buffer,result.Count);
            while(!result.EndOfMessage)
            {
                result = await client.ReceiveAsync(new ArraySegment<byte>(buffer),CancellationToken.None);//ToDo built in CancellationToken
                stream.Write(buffer,result.Count);
            }

            stream.Seek(0,SeekOrigin.Begin);
            using (StreamReader reader = new StreamReader(stream,Encoding.UTF8))
            {
                string message = reader.ReadToEnd();
                return message;
            }
        }
    }

这是此代码示例的网站链接:https://mycsharp.de/forum/threads/122437/websocket-client-beispiel

还有一个从 websocket 读写的例子: https://thecodegarden.net/websocket-client-dotnet

我希望这可以帮助您解决问题。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...