Member 12242717 Ответов: 1

Web-сокет не получает сообщения от сервера.


Я попробовал какой-то простой код для получения ответа на сообщение от сервера, подключающегося через веб-сокет, но я не могу получить никакого сообщения от сервера. Но когда я тестирую его с помощью онлайн-соединения с веб-сокетом, он показывает сообщение. Я хочу асинхронный websocket для клиента, который получает каждое сообщение от сервера. Я написал несколько простых кодов на c# с помощью websocket-sharp, но у меня нет никаких идей по этому поводу.

Что я уже пробовал:

using (ws = new WebSocket(webSocketUri))
{



    ws.Connect();
    ws.EmitOnPing = true;

    ws.OnMessage += (sender, e) =>
    {
        if (e.IsPing == true)
        {
            string data = e.Data.ToString();
            return;
        }
    };

}

1 Ответов

Рейтинг:
10

OriginalGriff

using это очень специфическое ключевое слово в C#, оно используется для управления утилизацией элементов, когда они заканчиваются.
Пишу это:

using (MyClass mc = new MyClass)
   {
   ...
   }
Это эквивалент написания этого:
{
MyClass mc;
try
   {
   mc = new MyClass();
   ...
   }
finally
   {
   mc.Dispose();
}
Когда ваше приложение достигнет конца using блок и we выходит из области действия, если он удаляется автоматически - поэтому любое открытое соединение закрывается, все делегаты очищаются, память возвращается в кучу, и WebSocket больше не существует вообще.
Поэтому он ничего не может получить - он не открыт, он не существует, и у него нет никаких методов обработки!

Сделайте это классным уровнем private переменная, и она должна начать работать.