WebSocket in ASP.NET Core

article/2025/10/7 14:55:40
回到目录

一、WebSocket

  WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)

首先HTTP有1.1和1.0之说,也就是所谓的keep-alive,把多个HTTP请求合并为一个,但是Websocket其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已,也就是说它是HTTP协议上的一种补充。WS和WSS协议类似于HTTP和HTTPS,允许使用安全和保密的通信方案。

回到目录

二、ASP.NET Core中的WebSocket

  要在ASP.NET Core中使用WebSocket,要先引用Microsoft.AspNetCore.WebSockets.Server的NuGet Package包。

  下面我们创建一个名为WebSocketHandler.cs的类,内容如下:

  通过对HttpContext中的WebSockets.AcceptWebSocketAsync方法,接受WebSocket请求;并在EchoLoop函数中进行请求的处理。

  
  1. public class SocketHandler
  2. {
  3. public const int BufferSize = 4096;
  4. WebSocket socket;
  5. SocketHandler(WebSocket socket)
  6. {
  7. this.socket = socket;
  8. }
  9. async Task EchoLoop()
  10. {
  11. var buffer = new byte[BufferSize];
  12. var seg = new ArraySegment<byte>(buffer);
  13. while (this.socket.State == WebSocketState.Open)
  14. {
  15. var incoming = await this.socket.ReceiveAsync(seg, CancellationToken.None);
  16. var outgoing = new ArraySegment<byte>(buffer, 0, incoming.Count);
  17. await this.socket.SendAsync(outgoing, WebSocketMessageType.Text, true, CancellationToken.None);
  18. }
  19. }
  20. static async Task Acceptor(HttpContext hc, Func<Task> n)
  21. {
  22. if (!hc.WebSockets.IsWebSocketRequest)
  23. return;
  24. var socket = await hc.WebSockets.AcceptWebSocketAsync();
  25. var h = new SocketHandler(socket);
  26. await h.EchoLoop();
  27. }
  28. /// <summary>
  29. /// branches the request pipeline for this SocketHandler usage
  30. /// </summary>
  31. /// <param name="app"></param>
  32. public static void Map(IApplicationBuilder app)
  33. {
  34. app.UseWebSockets();
  35. app.Use(SocketHandler.Acceptor);
  36. }
  37. }

  这个类只处理了最简单的客户端发送信息并将原文返回客户端。

  接着就要做路由映射了:

  
  1. app.UseStaticFiles();
  2. app.Map("/ws", SocketHandler.Map);

  要验证并看到运行的结果,我们还要创建一个Html。并在Html页面里面创建一个Div内容如下:

  
  1. <div id="output"></div>

  并且添加一个WebSocket的客户端脚本:

 

  
  1. <script language="javascript" type="text/javascript">
  2. var socket;
  3. var uri = "ws://" + window.location.host + "/ws";
  4. var output;
  5. var text = "test echo";
  6. function write(s) {
  7. var p = document.createElement("p");
  8. p.innerHTML = s;
  9. output.appendChild(p);
  10. }
  11. function doConnect() {
  12. socket = new WebSocket(uri);
  13. socket.onopen = function (e) { write("opened " + uri); doSend(); };
  14. socket.onclose = function (e) { write("closed"); };
  15. socket.onmessage = function (e) { write("Received: " + e.data); socket.close(); };
  16. socket.onerror = function (e) { write("Error: " + e.data); };
  17. }
  18. function doSend() {
  19. write("Sending: " + text);
  20. socket.send(text);
  21. }
  22. function onInit() {
  23. output = document.getElementById("output");
  24. doConnect();
  25. }
  26. window.onload = onInit;
  27. </script>

 

  下面就可以看到运行结果了:

 

 

  这个例子可以在如下Github中获取到:https://github.com/zbrad/wsweb


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

相关文章

NetScaler

NetScaler 简介 Citrix NetScaler 产品是一种应用交换机&#xff0c;用于执行特定于应用的流量分析&#xff0c;从而智能地分配和优化 Web 应用 4 - 7 层 (L4– L7) 的网络流量&#xff0c;并确保其安全。 例如&#xff0c;NetScaler 根据单个 HTTP 请求而非持续的 TCP 连接做出…

SocketTools.NET 11.0 Crack

在所有 HTTP 客户端组件中添加对 HTTP/2.0 协议的支持。 2023 年 5 月 17 日 - 10:58新版本 特征 在所有 HTTP 客户端组件中添加了对 HTTP/2.0 协议的支持。 更新了 TLS 1.2&#xff08;及更高版本&#xff09;和 SSH 2.0 的安全选项&#xff0c;以使用 Microsoft Windows 11 和…

四款Web扫描器

四款扫描器&#xff1a; appscan IBM公司 awvs 国外 xray 长亭科技 Netsparker 俗称“鲨鱼” 另外补充&#xff1a;绿盟极光、安恒明鉴。 一、appscan 本次案例&#xff1a;版本10.0.4破解版&#xff0c;安装完成后许…

ASP.NETCore

0. ASP.NETCore 介绍 ASP.NETCore是一个新的开源和跨平台的框架&#xff0c;用于构建如Web应用、物联网&#xff08;IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序。ASP.NET Core应用可运行于.NET Core和完整的.NET Framework之上。构建它的目的是为那些部署在云…

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

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

超轻量级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…