C#和WebSocket4Net实现服务端与客户端通讯
(一)服务端实现
1. 创建服务端实例:初始化 SuperWebSocket 服务端对象。
2. 启动监听:指定监听的端口,开始等待客户端连接。
3. 处理连接事件:当有客户端连接时,进行相应的处理。
4. 处理消息接收事件:对消息进行解析和处理。
5. 发送消息:根据需求,向客户端发送消息。
(二)客户端实现
1. 创建客户端实例:指定要连接的服务器地址。
2. 建立连接:调用连接方法,与服务器建立 WebSocket连接。
3. 发送消息:当向服务器发送消息时,调用发送方法。
4. 处理消息接收事件:在事件处理程序对消息进行处理。
(三)示例
服务端代码
using SuperWebSocket;
class WebSocketServer
{
private WebSocketServer server;
public WebSocketServer()
{
server = new WebSocketServer();
server.NewSessionConnected += Server_NewSessionConnected;
server.SessionClosed += Server_SessionClosed;
server.NewMessageReceived += Server_NewMessageReceived;
}
public void Start(int port)
{
if (server.Setup(port))
{
server.Start();
Console.WriteLine(#34;Server started on port {port}");
}
}
private void Server_NewSessionConnected(WebSocketSession session)
{
Console.WriteLine(#34;New client connected: {session.SessionID}");
}
private void Server_NewMessageReceived(WebSocketSession session, string value)
{
Console.WriteLine(#34;Received message from {session.SessionID}: {value}");
}
}
客户端代码
using WebSocket4Net;
class WebSocketClient
{
private WebSocket client;
public WebSocketClient(string url)
{
client = new WebSocket(url);
client.Opened += Client_Opened;
client.Closed += Client_Closed;
client.MessageReceived += Client_MessageReceived;
}
public void Connect()
{
client.Open();
}
public void SendMessage(string message)
{
if (client.State == WebSocketState.Open)
{
client.Send(message);
}
}
private void Client_Opened(object sender, EventArgs e)
{
Console.WriteLine("Connected to server");
}
private void Client_MessageReceived(object sender, MessageReceivedEventArgs e)
{
Console.WriteLine(#34;Received message from server: {e.Message}");
}
}