我正在尝试用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");
}
}
答案 0 :(得分:1)
我希望您的问题出在代码中的using
上。变量client
是using变量,因此在使用块结尾时将被处置(这是使用目的,自动调用dispose)。
这意味着在使用块结束执行client.Connect();
之后,对象被处置了。要验证这一点,请尝试删除using块并更改代码,如下所示:
var client = new WebSocketSharp.WebSocket("ws://localhost:8182");
别忘了在使用后处置该物体。