C# WebSocket 演示(使用 websocket-sharp 库)

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它使得客户端和服务器之间可以相互发送消息,而无需不断地重连。WebSocket 在实时应用程序中非常有用,比如聊天应用、在线游戏或者实时数据更新等。而在 C# 中,可以使用 websocket-sharp 这个开源库来快速实现 WebSocket 客户端和服务器。

安装 websocket-sharp

在开始之前,我们需要先安装 websocket-sharp 库。可以通过 NuGet 包管理器来安装。在 Visual Studio 中,可以使用以下命令:

Install-Package websocket-sharp

WebSocket 服务器示例

首先,我们来创建一个简单的 WebSocket 服务器。我们需要引用 websocket-sharp 库,并创建一个服务器类。

using System;
using System.Collections.Generic;
using System.Net;
using WebSocketSharp;
using WebSocketSharp.Server;

public class Chat : WebSocketBehavior
{
    protected override void OnMessage(MessageEventArgs e)
    {
        Console.WriteLine("收到消息: " + e.Data);
        // 将接收到的消息广播给所有连接的客户端
        Send("服务器: " + e.Data);
    }

    protected override void OnOpen()
    {
        Console.WriteLine("一个客户端连接了");
    }

    protected override void OnClose(CloseEventArgs e)
    {
        Console.WriteLine("一个客户端断开了连接");
    }
}

class Program
{
    static void Main(string[] args)
    {
        var wssv = new WebSocketServer(IPAddress.Any, 8080);
        wssv.AddWebSocketService<Chat>("/chat");
        wssv.Start();
        Console.WriteLine("WebSocket服务器已启动,等待客户端连接...");

        Console.ReadKey();
        wssv.Stop();
    }
}

这个服务器监听在 8080 端口,任何连接到 /chat 路径的客户端都将被处理。服务会在控制台中显示连接和断开的信息,并会将消息回送给客户端。

WebSocket 客户端示例

接下来,我们来实现一个简单的 WebSocket 客户端。客户端会连接到刚刚创建的服务器,并发送一条消息。

using System;
using System.Threading;
using WebSocketSharp;

class Program
{
    static void Main(string[] args)
    {
        using (var ws = new WebSocket("ws://localhost:8080/chat"))
        {
            ws.OnMessage += (sender, e) =>
            {
                Console.WriteLine("收到来自服务器的消息: " + e.Data);
            };

            ws.OnOpen += (sender, e) =>
            {
                Console.WriteLine("成功连接到服务器");
            };

            ws.OnClose += (sender, e) =>
            {
                Console.WriteLine("与服务器的连接已关闭");
            };

            ws.Connect();
            Console.WriteLine("请输入消息发送到服务器(输入‘exit’退出):");

            string message;
            while ((message = Console.ReadLine()) != "exit")
            {
                ws.Send(message);
            }

            ws.Close();
        }
    }
}

在这个客户端程序中,我们首先创建一个 WebSocket 实例并连接到服务器。我们设置了三个事件处理程序来处理打开连接、接收消息和关闭连接的事件。用户可以输入消息发送到服务器,输入“exit”可以退出程序。

总结

通过上述的示例代码,我们实现了一个基本的 WebSocket 服务器和客户端。这是一个非常适合实时 Web 应用程序的架构,使用 websocket-sharp 库让我们很容易地处理 WebSocket 通信。实际上,WebSocket 的应用场景非常广泛,包括实时聊天、在线游戏、股票行情更新等。你可以根据自己的需求在这个基础上进行更复杂的功能扩展。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部