当前位置: 首页 > news >正文

.Net6使用WebSocket与前端进行通信

1. 创建类WebSocketTest:

using System.Net.WebSockets;
using System.Text;namespace WebSocket.Demo
{public class WebSocketTest{//当前请求实例System.Net.WebSockets.WebSocket socket =null;public async Task DoWork(HttpContext ctx){socket = await ctx.WebSockets.AcceptWebSocketAsync();//执行监听await EchoLoop();}public async Task EchoLoop(){//创建缓存区var buffer = new byte[1024];var arraySeg = new ArraySegment<byte>(buffer);while (this.socket.State == WebSocketState.Open){var incoming = await this.socket.ReceiveAsync(arraySeg, CancellationToken.None);//判断类型读取if (incoming.MessageType == WebSocketMessageType.Text){//incoming.Count  代表,请求内容字节数量string userMessage = Encoding.UTF8.GetString(arraySeg.Array, 0, incoming.Count);//接收客户端的字符串userMessage = "客户端信息: " + userMessage + " 。时间: " +DateTime.Now.ToLongTimeString();ArraySegment<byte> segResult = new ArraySegment<byte>(Encoding.UTF8.GetBytes(userMessage));await socket.SendAsync(segResult, WebSocketMessageType.Text, true, CancellationToken.None);}else{}byte[] backInfo = System.Text.UTF8Encoding.Default.GetBytes("服务端相应内容结束");var outgoing = new ArraySegment<byte>(backInfo, 0, backInfo.Length);await this.socket.SendAsync(outgoing, WebSocketMessageType.Text, true, CancellationToken.None);}}}
}

2. 在program.cs中进行绑定

app.UseWebSockets();
app.Map("/websocket/test", con =>
{con.UseWebSockets();con.Use(async (ctx, next) =>{//创建监听websocketWebSocketTest ws = new WebSocketTest();await ws.DoWork(ctx);await next.Invoke();});
});

3. 使用websocket在线工具模拟请求:

http://www.lryc.cn/news/240741.html

相关文章:

  • hadoop 编写开启关闭集群脚本, hadoop hdfs,yarn开启关闭脚本。傻瓜式hadoop脚本 hadoop(九)
  • ArrayList中放的是一个对象,如何同时根据对象中的三个字段对List进行排序
  • MONGODB 的基础 NOSQL注入基础
  • 单链表实现【队列】
  • 随机微分方程的MATLAB数值求解
  • ChatGPT 也并非万能,品牌如何搭上 AIGC「快班车」
  • 【JavaSE】不允许你不会使用String类
  • 身份证阅读器和社保卡读卡器Harmony鸿蒙系统ArkTS语言SDK开发包
  • 并发与并行
  • 搭个网页应用,让ChatGPT帮我写SQL
  • 实时云渲染 助力破解智慧园区痛点困局
  • 计算机组成原理2
  • Py之PyMuPDF:PyMuPDF的简介、安装、使用方法之详细攻略
  • 2023亚太杯数学建模A题B题C题思路模型代码论文指导
  • 【C/PTA】函数专项练习(四)
  • 广西柳州机械异形零部件三维扫描3D抄数全尺寸测绘建模-CASAIM中科广电
  • (四)C语言之符号常量概述
  • springboot -sse -flux 服务器推送消息
  • js进阶笔记之原型,原型链
  • 【DevOps】Git 图文详解(四):Git 使用入门
  • Jquery ajax 同步阻塞引起的UI线程阻塞的坑(loading图片显示不出来 )
  • 读书笔记——《黑猩猩的政治》
  • 此处不允许使用特性namespace
  • 随笔记录-springmvc_ResourceHandlerRegistry+ResourceHttpRequestHandler
  • Redis面试内容,Redis过期策略,Redis持久化方式,缓存穿透、缓存击穿和缓存雪崩,以及解决办法
  • 爱上C语言:scanf、gets以及getchar输入字符串你真的懂了吗
  • ubuntu Setforeground 前台应用切换
  • 【Java 进阶篇】从Java对象到JSON:Jackson的魔法之旅
  • HarmonyOS ArkTS语言,运行Hello World(二)
  • 四、文件包含漏洞