基于asp.netCoreWebApi的webSocket通信示例(net6)

article/2025/10/7 14:53:27

背景:

    在阿里云服务器中搭建了常规的tcp server服务(基于.net framework 4.0)。用以实现远程控制家里的鱼缸灯,办公室的电脑开关机等功能。客户端采用PC桌面端和微信小程序端。

    服务端:tcp server(基于.net framework 4.0)

    客户端:PC桌面端软件(.net winform)、微信小程序

    问题:

   微信小程序端支持websocket通信而且必须是wss(wss表示在TLS之上的websocket,相当于https),无法与tcp server直接通信。

    为什么不重新开发服务端呢?

    一是我懒。

    二是服务端TCP Server必须时刻保持与家里的鱼缸灯控制器,办公室的开关机控制器等设备的网络连接。而且还设定了定时执行的策略,故不适宜更换其他技术实现。

   解决方法:

   微信小程序的后端采用了asp.net web api (net6)搭建的接口服务。如果可以在该web api 接口服务中搭建websocket服务,中转微信小程序和tcp server服务端,同时升级TCP Server,使之同时支持tcp client连接和websocket连接,问题可得到解决。

 

开干!

    一、新建ASP.NET Core Web API  项目(net6)

    基于net 6.0

    二、创建websocket中间件WebsocketHandler

    新建类,名为:WebsocketHandler

    在接收到websocket连接时,将触发Invoke函数。

    关键代码:    

 WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync();_logger.LogInformation($"接收到websocket连接.");try{WebSocketReceiveResult result;do{var buffer = new byte[1024 * 1];result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);if (result.MessageType == WebSocketMessageType.Text && !result.CloseStatus.HasValue){var msgString = Encoding.UTF8.GetString(buffer);_logger.LogInformation($"接收到数据:{msgString}.");//发送接收到的信息await webSocket.SendAsync(new ArraySegment<byte>(buffer, 0, buffer.Length), WebSocketMessageType.Text, true, CancellationToken.None);}}while (!result.CloseStatus.HasValue);}catch (Exception ex){}

    AcceptWebSocketAsync函数接收websocket连接,并把连接保存于变量webSocket。

    定义变量WebSocketReceiveResult result用来接收客户端发送的数据,webSocket.ReceiveAsync函数接收数据。

    webSocket.SendAsync函数实现向客户端发送数据的功能。

    可以看到,为了测试发送和接收的功能,服务端将接收到的数据直接返回给客户端

    三、添加中间件

    在Program中添加此中间件:

app.UseWebSockets();
app.UseMiddleware<WebsocketHandler>();

    至此,服务端已建好。

    四、运行服务端

    Ctrl+F5,运行服务端,可看到,监听端口为:5276    

    五、创建客户端:测试.html

    创建静态页面:webSocketClient.html,作为客户端,该客户端将实现向服务端发送消息,并接收服务端的消息。

    使用原生javascript实现,不依赖其他js库。

    关键函数:

    创建websocket:new WebSocket(server + '/ws');

    websocket打开成功事件:WEB_SOCKET.onopen

    websocket接收消息事件:WEB_SOCKET.onmessage

    websocket关闭事件:WEB_SOCKET.onclose

    

<button type="button" onclick="javascript:connectWebSocket()">测试</button>
    界面上放置一个按钮,触发websocket。

    六、测试成功

    双击在浏览器中打开webSocketClient.html,同时按F12打开调试器。点击“测试”按钮,观察控制台面板,可看到websocket接收到来自服务器的消息“hello world”

    

    而服务端面板:显示接收到websocket连接并接收到消息“hello world"

    

    

我已将代码上传,下载码是:C67F979907

    下载码是啥?如何下载=》点击查看


http://chatgpt.dhexx.cn/article/JUI1PNih.shtml

相关文章

超轻量级Web安全漏洞扫描工具Netsparker使用教程介绍

Netsparker是一款web应用安全漏洞扫描工具 Netsparter官网&#xff1a;https://www.netsparker.com/web-vulnerability-scanner/&#xff0c;与其他安全扫描工具相比更好检测SQL注入和跨站脚本攻击类型的安全漏洞。 打开工具&#xff0c;点击start a new scan&#xff0c;选择…

黑客最常用的10款黑客工具

以下所有这些工具都是捆绑在一起的Linux发行版&#xff0c;如Kali Linux或BackBox&#xff0c;所以我们一定会建议您安装一个合适的Linux黑客系统&#xff0c;使您的生活更轻松 - 尤其是因为这些黑客工具可以&#xff08;自动&#xff09;更新。 1、Nikto&#xff08;网站漏洞…

安全扫描工具 Netsparker

Netsparker是一款web应用安全漏洞扫描工具 Netsparter官网&#xff1a;https://www.netsparker.com/web-vulnerability-scanner/&#xff0c;与其他安全扫描工具相比更好检测SQL注入和跨站脚本攻击类型的安全漏洞。 打开工具&#xff0c;点击start a new scan&#xff0c;选择…

常用wed扫描工具 awvs|appscan|Netsparker|Nessus

一、awvs 是一款知名的自动化网络漏洞扫描工具 功能介绍&#xff1a; 1.WebScanner&#xff1a;全站扫描&#xff0c;Web安全漏洞扫描 2.Site Crawler&#xff1a;爬虫功能&#xff0c;遍历站点目录结构 3.Target Finder&#xff1a;端口扫描&#xff0c;找出web服务器 4.Sub…

Netsparker超轻量级Web安全漏洞扫描工具使用教程介绍

有特征 此工具分为收费版本和绿色版本 绿色版本也是很强大的 一 、Netsparker工具简介 Netsparker是一款综合型的web应用安全漏洞扫描工具&#xff0c;它分为专业版和免费版&#xff0c;免费版的功能也比较强大。Netsparker与其他综合 性的web应用安全扫描工具相比的一个特…

了解Netsparker扫描器

Netsparker是一款综合型的Web应用安全漏洞扫描工具&#xff0c;它分为专业版和免费版&#xff0c;免费版的功能也比较强大。Netsparker与其他综合性的Web应用安全扫描工具相比的一个特点是它能过更好的检测SQL Injection和Cross-site Scripting类型的安全漏洞。 一、使用Netspa…

Web安全—Web漏扫工具NetSparker安装与使用

本文仅用于安全学习使用&#xff01;切勿非法用途。 一、NetSparker概述 Netsparker 是一款综合型的 web 应用安全漏洞扫描工具&#xff0c;它分为专业版和免费版&#xff0c;免费版的功能也比较强大。Netsparker 与其他综合性的 web 应用安全扫描工具相比的一个特点是它能够更…

2022 年顶级网络安全专家最爱用的10大工具

​目录 1. Nmap (Network Mapper)网络映射器 2. Nessus 3. Nikto 4. Kismet 5. NetStumbler 6. Acunetix 7. Netsparker网络火花 8. Intruder 9. Nmap 10. Metasploit 如何使用这些软件&#xff1f; 结论 ​ 网络安全专家&#xff0c;不是你认为的那种搞破坏的网络…

csdn的markdown编辑器基本语法(整理版)

文章目录 0 文章目录名1 标题2 字体设置3 文本设置4 按键展示5 功能快捷键6 生成适合的列表7 插入链接与图片8 插入代码段9 创建表格9.1 创建简单表格9.2 html表格 10 UML 图表10.1 序列图&#xff1a;10.2 普通流程图:10.3 FLowchart流程图10.4 甘特图 11 KaTeX数学公式 0 文章…

64位windows10,打不chm文件问题,终于解决了。。。

公司新给配了一台win10笔记本&#xff0c;发现打不开chm文件&#xff0c;度娘给的方案都是修改文件属性解除锁定之类的&#xff0c;根本解决不了问题。 经过几天研究&#xff0c;发现将chm文件拖放到 SysWOW64中的hh.exe可以打开 于是决定修改chm文件关联打开程序 直接修改无果…

chm转txt(chm转txt格式转换器安卓)

chm转txt格式转换器-有没有可以将CHM电子书格式转换为TXT格式的软件. 有一个叫DeCompiler的软件,可以将你说的CHM文件转换面原来生成chm文件时的网页文件(htm,html),呵呵~~应该可以满足你的用处吧~~ 你在网上按这个名字找一下,如果找不到发邮件给我,我发给你~ fjd0105 求txt转…

易维清使用技巧:CHM编辑利器

易维清源代码生成软件不但是一款专业的管理信息系统源代码生成器&#xff0c;其附带的编辑帮助信息功能更是CHM编辑利器。而且&#xff0c;免费试用版中的这个功能完全没有削减的哦&#xff0c;不花钱就可以帮你轻松编辑生成完美的CHM&#xff0c;官方下载地址&#xff1a;www.…

CSDN Markdown编辑器 图片对齐方式(居中/左对齐/右对齐)及图片大小

Markdown图片对齐方式&#xff08;居中/左对齐/右对齐&#xff09;及图片大小 一、图片对齐方式1.居中2.右对齐、左对齐 二、图片大小 说明&#xff1a;加载图片给有两种方式&#xff0c;一种用网页图片链接&#xff0c;另一种上传本地图片。 获得图中方框中的图片链接为&…

vim编辑器下载Linux版,强大的vim编辑器【下载!linux基础命令豪华版】

vi编辑器学习三 4.编辑操作 进入输入模式命令 i插入命令 a附加命令 o打开命令 c修改命令 r取代命令 s替换命令 Esc退出命令 输入模式的操作 Home光标到行首 End 光标到行尾 Page Up和Page Down上下翻页 Delect删除光标位置的字符 删除操作(命令模式使用) x删除光标处的单个字符…

MD编辑器用法讲解

文章目录 为什么写这个&#xff1f;0. 介绍一下md&#xff1f;1 纯md语法的使用1.1 快捷键1.2 字符效果和横线等1.2.1 横线1.2.2 删除线1.2.3 斜体字1.2.4 粗体1.2.5 粗斜体1.2.6 上标与下标1.2.7 **缩写(同HTML的abbr标签)**1.2.8 引用 Blockquotes 1.3 各级标签 标签 1标签 2…

CSDN - markdown 编辑器模板

CSDN - markdown 编辑器模板 # <center>CSDN - markdown 编辑器模板</center>**Markdown 编辑器**欢迎页。## 1. 功能拓展与语法支持Markdown 编辑器功能拓展与语法支持&#xff1a;1. 在创作中心设置代码高亮样式&#xff0c;Markdown **将代码片显示选择的高亮样…

树视图编辑器

![ 在这里插入图片描述 ](https://img-blog.csdnimg.cn/20210304200742955.png?x-oss-processimage/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2lsb3ZleW91YW55bW9yZQ,size_16,color_FFFFFF,t_70)

在线word编辑html,eWebEditor - 在线HTML编辑器,HTML在线编辑

本地文件自动上传&#xff1a; 利用本地文件自动上传功能&#xff0c;可以把编辑器内容中含有本地的图片、图表等文件自动上传到服务器。使内容发布后&#xff0c;浏览者也可以看到或下载此文件&#xff0c;而不是只有自己可以看到或下载到。您不需要一个一个文件的插入并上传&…

《MarkDown编辑器的使用技巧(修改录入方式与目录生成)|CSDN编辑器测评》

《MarkDown编辑器的使用技巧(修改录入方式与目录生成)&#xff5c;CSDN编辑器测评》 CSDN的 Markdown 编辑器是当前是编辑效率较高的编辑器&#xff0c;那么我在其使用过程中最【稀罕】的是目录功能。本编文章教会你修改【MarkDown编辑器】的设置&#xff0c;以及快速创建目录…

Python技能树及Markdown编辑器测评 20212109施铖哲

文章目录 前言:rocket:一、Python技能树使用评价:cat:1.1介绍:fire:1.2体验:fireworks:1.2.1首页1.2.2课程界面1.2.3练习1.2.4交流讨论与笔记1.2.5其他优点1.2.6缺点 1.3小结:coffee: 二、Markdown编辑器使用评价:dog:2.1介绍:telescope:2.2体验1-页面:moon:2.2.1界面2.2.2选项…