Websocket连接在C#中连接后立即关闭

时间:2019-05-13 08:49:59

标签: c# websocket

我正在尝试用C#实现Websockets,我尝试了很多方法,但是都无法正常工作。

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 个答案:

答案 0 :(得分:1)

我希望您的问题出在代码中的using上。变量client是using变量,因此在使用块结尾时将被处置(这是使用目的,自动调用dispose)。

这意味着在使用块结束执行client.Connect();之后,对象被处置了。要验证这一点,请尝试删除using块并更改代码,如下所示:

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

别忘了在使用后处置该物体。