Как подключиться и прослушать внешний URL-адрес веб-сокета, используя C # и ASP.Net Core 2.2 - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь создать бота, который будет слушать URL-адрес WebSocket с C # и ASP.Net Core 2.2.

Но я новичок в области WebSocket.

Я читаю Microsoftдокументация о WebSocket и ClientWebSocket для решения моей проблемы.но это мне не поможет.

Как мое приложение может прослушивать внешний URL-адрес WebSocket и реагировать на входящие сообщения?

Я пробовал код ниже, но получаю "Невозможно создать экземпляр рефератакласс или интерфейс "WebSocket". "ошибка.

using (var ws = new WebSocket("wss://ws.example.com"))
{
    ws.OnMessage += (sender, e) =>
        Console.WriteLine("Message received" + e.Data);
    ws.OnError += (sender, e) =>
        Console.WriteLine("Error: " + e.Message);
    ws.Connect();
        Console.ReadKey(true);
}

1 Ответ

1 голос
/ 09 апреля 2019

Это должно быть сделано в базовом сценарии.

 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);
        }
    }

Однако, если вы планируете создать несколько Listener объектов (в контексте HttpController, который на маршруте открывает sockets), тогда все изменится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...