G
N
I
D
A
O
L

websocket-sharp:.NET平台上的WebSocket客户端与服务器开源库

1. 简介:

websocket-sharp提供 WebSocket 客户端和服务器库,基于 C# 开发的,并遵循 WebSocket 协议规范,使得开发人员能够轻松地在 .NET 应用程序中实现 WebSocket 通信。

https://github.com/sta/websocket-sharp

websocket-sharp 特色功能有:

1、简洁易用的API:提供清晰且直观的API接口,方便开发者快速集成WebSocket,无论是创建 WebSocket 客户端还是服务器,都可以通过几行代码快速实现。

2、完整的WebSocket协议支持:遵循 WebSocket 协议规范,支持 RFC 6455 中定义的所有核心功能,包括文本和二进制消息传输、Ping/Pong 心跳机制、扩展和子协议等。

3、事件驱动的消息处理:采用事件驱动的方式,实现响应连接打开、消息接收、连接关闭等事件,实现异步、非阻塞的通信模式。

4、灵活的配置选项:提供了丰富的配置选项,方便开发者根据项目需求自定义行为。如:设置超时时间、SSL/TLS 加密选项、自定义标头等。

5、高性能:支持异步编程模型,可以有效地利用系统资源,并支持处理大量并发连接。

2. 基本使用方法

2.1、安装依赖库

Install-Package WebSocketSharp -Pre

2.2、客户端

using System;  
using WebSocketSharp;  
  
namespace Example  
{  
  public class Program  
  {  
    public static void Main (string[] args)  
    {  
      // 创建一个WebSocket实例,并指定其URL   
      using (var ws = new WebSocket ("ws://xx.far/Laputa"))   
      {  
        // 为ws对象的OnMessage事件添加事件处理程序 
        ws.OnMessage += (sender, e) =>  
                          Console.WriteLine ("Laputa says: " + e.Data);  
  
        // 建立与WebSocket服务器的连接。
        ws.Connect ();  
  
        // 发送字符串到WebSocket服务器。
        ws.Send ("BALUS");  

        Console.ReadKey (true);  
      }  
    }  
  }  
}

2.3、服务端

using System;  
using WebSocketSharp;  

using WebSocketSharp.Server;  

namespace Example  
{  
  public class Laputa : WebSocketBehavior  
  {  
    // 重写OnMessage方法
    protected override void OnMessage (MessageEventArgs e)  
    {  
      var msg = e.Data == "BALUS"  
                ? "Are you kidding?"  
                : "I'm not available now.";  
  
      // 发送回复消息给客户端
      Send (msg);  
    }  
  }  
  
  public class Program  
  {  
    public static void Main (string[] args)  
    {  
      // 创建一个WebSocketServer实例,并指定其监听的WebSocket URL
      var wssv = new WebSocketServer ("ws://dragonsnest.far");  
  
      // 添加一个WebSocket服务
      wssv.AddWebSocketService<Laputa> ("/Laputa");  
  
      // 启动WebSocket服务器
      wssv.Start ();  

      Console.ReadKey (true);  
  
      // 停止WebSocket服务器。
      wssv.Stop ();  
    }  
  }  
}

 

posted @ 2024-05-08 19:54  firespeed  阅读(545)  评论(0编辑  收藏  举报