如何使用C#和ASP.NETCore2.2连接和侦听外部websocket url

如何使用C#和ASP.NETCore2.2连接和侦听外部websocket url,c#,websocket,.net-core,C#,Websocket,.net Core,我正在尝试创建一个bot,它通过C#和ASP.NETCore2.2监听WebSocket URL 但我在WebSocket领域是新手 我阅读了有关WebSocket和ClientWebSocket的Microsoft文档来解决我的问题。但是对我没有帮助 我的应用程序如何侦听外部WebSocket URL并对传入的消息作出反应 我尝试了下面的代码,但出现“无法创建抽象类或接口'WebSocket'的实例”错误 这应该在基本情况场景中实现 public class Listener {

我正在尝试创建一个bot,它通过C#和ASP.NETCore2.2监听WebSocket URL

但我在WebSocket领域是新手

我阅读了有关WebSocket和ClientWebSocket的Microsoft文档来解决我的问题。但是对我没有帮助

我的应用程序如何侦听外部WebSocket URL并对传入的消息作出反应

我尝试了下面的代码,但出现“无法创建抽象类或接口'WebSocket'的实例”错误


这应该在基本情况场景中实现

 public class Listener
    {
        public void StopListening()
        {
            this.src.Cancel();
        }
        private Task listenTask;
        private CancellationTokenSource src=new CancellationTokenSource();
        public Task Listen(string url)
        {

           listenTask = Task.Run(async () =>
            {
                try
                {
                    byte[] buffer = new byte[1024];
                    await socket.ConnectAsync(new Uri(url), CancellationToken.None);
                    while (true)
                    {
                        WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, CancellationToken.None);
                        string data = Encoding.UTF8.GetString(buffer, 0, result.Count);
                        Console.WriteLine(data);
                    }
                }
                catch (Exception ex)
                {
                    //treat exception
                }
            },src.Token);
        }
    }

但是,如果您计划创建多个
侦听器
对象(在路由上打开
套接字的
HttpController
的上下文中),则情况会发生变化。

您尝试了什么,哪些不起作用?你的问题需要更具体一些,因为这里不是将代码编写免费外包给互联网的地方。你想获得xml数据之类的流式消息吗?@jdweng no,像jsondata@DenisSchaf我告诉他我在websocket领域是新手,我尝试的所有代码都没有帮助。
websocket
是一个抽象类,您可以使用`。
 public class Listener
    {
        public void StopListening()
        {
            this.src.Cancel();
        }
        private Task listenTask;
        private CancellationTokenSource src=new CancellationTokenSource();
        public Task Listen(string url)
        {

           listenTask = Task.Run(async () =>
            {
                try
                {
                    byte[] buffer = new byte[1024];
                    await socket.ConnectAsync(new Uri(url), CancellationToken.None);
                    while (true)
                    {
                        WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, CancellationToken.None);
                        string data = Encoding.UTF8.GetString(buffer, 0, result.Count);
                        Console.WriteLine(data);
                    }
                }
                catch (Exception ex)
                {
                    //treat exception
                }
            },src.Token);
        }
    }