Закрытие соединения через Websocket сразу после соединения в c # - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь реализовать Websockets в c #, и я пробовал много способов, но ничего не работает.

i) отлично работает с классом ClientwebSocket, но у этого класса нет событий (мне нужны события)

ii) пробовал с классом WebSocketSharp.WebSocket, но закрывался сразу после открытия соединения

iii) WebSocket4Net.WebSocket - та же проблема, что при немедленном закрытии соединения

Может кто-нибудь, пожалуйста, помогите мне в решении этой проблемы. Большое спасибо заранее.

class SocketConnection
{
    public static WebSocketSharp.WebSocket client;

    public void connectionEstablish()
    {
        //---------------------------WebSocketSharp ----------------------------

        using (client = new WebSocketSharp.WebSocket("ws://localhost:8182"))
        {
            client.OnClose += new EventHandler<CloseEventArgs>(onClosed);
            client.OnMessage += new EventHandler<MessageEventArgs>(onReceived);
            client.OnOpen += new EventHandler(OnConnectionOpen);

            client.Connect();

        }
      }
    public static void onClosed(object sender, EventArgs e)
    {
      Console.WriteLine("Inclose");
    }
    public static void onReceived(object sender, MessageEventArgs e)
    {
      Console.WriteLine("received");
    }
    public void OnConnectionOpen(object sender, EventArgs e)
    {
      Console.WriteLine("opened connection");
    }
}

1 Ответ

1 голос
/ 13 мая 2019

Я надеюсь, что ваша проблема с using в коде.Переменная client является переменной using, поэтому она будет утилизироваться при использовании конца блока (это то, для чего предназначена цель вызова, вызов dispose автоматически).

Это означает, что после выполнения client.Connect(); с использованием конца блока и, следовательно, объект будет удален.Чтобы убедиться в этом, попробуйте удалить блок using и изменить код следующим образом:

var client = new WebSocketSharp.WebSocket("ws://localhost:8182");

Не забудьте утилизировать объект после использования.

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