.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.hqwc.cn/news/207405.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java_函数式接口

文章目录 一、什么是函数式接口二、四大核心函数式接口三、使用举例 一、什么是函数式接口 如果一个接口只有一个抽象方法&#xff0c;那么该接口就是一个函数式接口函数式接口的实例可以通过 lambda 表达式、方法引用或者构造方法引用来创建如果我们在某个接口上声明了 Funct…

关于 Docker

关于 Docker 1. 术语Docker Enginedockerd&#xff08;Docker daemon&#xff09;containerdOCI (Open Container Initiative)runcDocker shimCRI (Container Runtime Interface)CRI-O 2. 容器启动过程在 Linux 中的实现daemon 的作用 Docker 是个划时代的开源项目&#xff0c;…

【Docker】Docker安装Nginx配置静态资源

1.下载镜像 2.创建nginx配置文件 3.创建nginx容器运行 4.配置nginx静态资源 1.下载镜像 Dockerhub官网&#xff1a;Docker docker pull nginx docker pull nginx下载最新版本 默认latest 下载指定版本docker pull nginx:xxx 2.创建nginx配置文件 启动容器之前要创建nginx…

一篇五分生信临床模型预测文章代码复现——Figure 10.机制及肿瘤免疫浸润(六)

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

【电子通识】USB3.0和USB2.0有什么区别?

版本 USB2.0是2000年4月27日由USB-IF组织提出了USB2.0总线协议规范。 USB3.0是2008年11月17日由USB-IF组织提出了超高速USB3.0规范。 图标对比 USB2.0的标志就是和USB1.1的标志基本上没啥区别&#xff0c;还是以前的那个样子&#xff0c;使用黑色颜色用标识 USB3.0它有一个S…

含分布式电源的配电网可靠性评估matlab程序

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 参考文献&#xff1a; 基于仿射最小路法的含分布式电源配电网可靠性分析——熊小萍 主要内容&#xff1a; 通过概率模型和时序模型分别进行建模&#xff0c;实现基于概率模型最小路法的含分布式电源配电网…

Postman常见问题及解决方法

1、网络连接问题 如果Postman无法发送请求或接收响应&#xff0c;可以尝试以下操作&#xff1a; 检查网络连接是否正常&#xff0c;包括检查网络设置、代理设置等。 确认请求的URL是否正确&#xff0c;并检查是否使用了正确的HTTP方法&#xff08;例如GET、POST、PUT等&…

PaddleOCR 运行退出0xC0000409,不显示错误信息

在一台老的电脑上去运行PaddleOCR 时&#xff0c;发现程序输出ppocr DEBUG: Namespace后&#xff0c;返回错误码0xC0000409执行到ocr就闪退&#xff0c;不提示。 原因&#xff1a;PaddleOCR 吞了输出。 解决方案 需要改下Pycharm的运行选项&#xff0c;勾选重定向也就是在输出…

QTableWidget——编辑单元格

文章目录 前言熟悉QTableWiget&#xff0c;通过实现单元格的合并、拆分、通过编辑界面实现表格内容及属性的配置、实现表格的粘贴复制功能熟悉QTableWiget的属性 一、[单元格的合并、拆分](https://blog.csdn.net/qq_15672897/article/details/134476530?spm1001.2014.3001.55…

华为认证 | HCIE考证流程详解!

HCIE&#xff08;Huawei Certified ICT Expert&#xff0c;华为认证ICT专家&#xff09;是华为认证体系中最高级别的ICT技术认证&#xff0c;旨在打造高含金量的专家级认证&#xff0c;为技术融合背景下的ICT产业提供新的能力标准&#xff0c;以实现华为认证引领ICT行业技术认证…

centos7安装MySQL—以MySQL5.7.30为例

centos7安装MySQL—以MySQL5.7.30为例 本文以MySQL5.7.30为例。 官网下载 进入MySQL官网&#xff1a;https://www.mysql.com/ 点击DOWNLOADS 点击链接&#xff1b; 点击如上链接&#xff1a; 选择对应版本&#xff1a; 点击下载。 安装 将下载后的安装包上传到/usr/local下…

得物前端开发一面面经(等待结果中)

基本情况 上周有幸约到了得物的前端一面&#xff0c;问题都不是很难&#xff0c;但是比较底层&#xff0c;不是八股&#xff0c;而是js的很很细致的东西&#xff1b;且面试官会根据简历去问技术。本篇博客就记录一下这次一面面到的一些技术问题&#xff0c;以及我回答的情况。…