首页 > 其他分享 >websocket-sharp:.NET平台上的WebSocket客户端与服务器开源库

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

时间:2024-05-08 20:01:16浏览次数:31  
标签:sharp WebSocket ws 服务器 using websocket public 客户端

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 ();  
    }  
  }  
}

 

标签:sharp,WebSocket,ws,服务器,using,websocket,public,客户端
From: https://www.cnblogs.com/firespeed/p/18180758

相关文章

  • VectSharp一个C#轻量级矢量图形库
    VectSharp是一个功能强大的C#库,专门用于创建矢量图形,包括文本,不依赖任何第三方,支持跨平台运行,包括Mac、Windows和Linux。使得开发者可以更容易地在他们的项目中集成矢量图形的生成和处理。https://github.com/arklumpus/VectSharp特点:内置字体:包含了14种标准字体,这些字体......
  • SpringBoot集成WebSocket
    SpringBoot集成WebSocket1.引jar包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency><dependency&......
  • websocket
    websocket,web版的socket原web中:http协议,无状态&短链接客户端主动连接服务器客户端向服务器发送消息,服务器收到返回数据客户端收到数据断开连接https一些+对数据进行加密。我们在开发过程中想要保留一些状态信息,基于cookie来做现在支持:http协议。一次请求一次响......
  • web server apache tomcat11-31-websocket
    前言整理这个官方翻译的系列,原因是网上大部分的tomcat版本比较旧,此版本为v11最新的版本。开源项目从零手写实现tomcatminicat别称【嗅虎】心有猛虎,轻嗅蔷薇。系列文章webserverapachetomcat11-01-官方文档入门介绍webserverapachetomcat11-02-setup启动web......
  • 【YoloDeployCsharp】基于.NET Framework的YOLO深度学习模型部署测试平台
    1.项目介绍  基于.NETFramework4.8开发的深度学习模型部署测试平台,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等应用场景,同时支持图像与视频检测。模型部署引擎使用的是OpenVINO™、TensorRT、ONNXruntime以及OpenCVDNN,支持CP......
  • webapi添加添加websocket中间件
    添加位置我按照MSDN的例子添加了一个复述客户端响应的中间件。需要注意的时,中间件采用那种方式添加,添加在哪。哪种方式我选择创建一条管道分支,只要时ws的连接请求,就转到这个分支因此,我们需要使用的是MapWhen()来创建管道分支。添加在哪要注意授权的问题,所以应该添加到授权......
  • GtkSharp 设置窗口背景透明
    本文告诉大家如何在GTKSharp里面设置窗口背景透明在GTK里面设置窗口背景透明十分简单,只需使用如下代码即可this.AppPaintable=true;varscreen=this.Screen;varvisual=screen.RgbaVisual;if(visualisnotnull&&screen.IsCo......
  • fiber使用websocket--多进程版本
    多进程数据是隔离的,也就是说处理不好,不同的用户登录,其实不在一个进程,没办法直接通信解决办法:定义一个全局变量,所有进程公用,要加锁如果是单进程版本其实就跟gin框架那些一样了多线程+channel不存在数据隔离的问题main.gopackagemainimport( "flag" "fmt" "log" "sync"......
  • 如何基于Django中的WebSockets和异步视图来实现实时通信功能
    本文分享自华为云社区《结合Django中的WebSockets和异步视图实现实时通信功能的完整指南》,作者:柠檬味拥抱。在现代Web应用程序中,实时通信已经成为了必不可少的功能之一。无论是在线聊天、实时数据更新还是实时通知,都需要通过实时通信技术来实现。Django作为一个强大的Web框架,提......
  • vuex结合websocket使用
    1、创建一个store文件夹,并在其中创建store.js文件,结合vuex:importVuefrom'vue'importVuexfrom'vuex'importcommonfrom"../common/common.js";Vue.use(Vuex)conststore=newVuex.Store({state:{/***是否需要强制登录*/......