在 ASP.NET Core 和 JavaScript 中配置 WebSocket

在本文中,我们将了解 WebSocket,并逐步讲解如何在客户端配置 WebSocket 并与服务器通信。首先,让我们先来了解一下“ WebSocket ”。

什么是 WebSocket

WebSocket 是一种协议,它提供了一种通过持久连接在客户端和服务器之间交换数据的方法。数据可以以“数据包”的形式双向传递,而无需断开连接或进行任何额外的 HTTP 请求。

WebSocket 在需要持续数据交换的场景中非常有用,例如在线游戏、实时交易系统等。

打开 WebSocket 连接

客户端通过称为 WebSocket 握手 的过程建立 WebSocket 连接。此过程始于客户端向服务器发送常规 HTTP 请求。该请求包含一个 Upgrade 标头,用于告知服务器客户端想要建立 WebSocket 连接。

下面是我们如何打开/创建 WebSocket 连接客户端的简单示例:

事件:套接字创建后,我们可以监听其上的事件。共有 4 个事件:

    • Onopen:当建立套接字连接时发生
• Onmessage:当客户端从服务器接收数据时发生
• Onerror:当通信发生任何错误时发生
• Onclose:连接关闭时发生

方法

    • socket.send(data):使用连接传输数据
• socket.close([code], [reason]):终止任何现有连接

当我们调用new WebSocket(url)时 ,它会立即开始连接。

在连接期间,客户端会询问服务器:“您是否支持 Websocket?”如果服务器回答“是”,则对话继续通过 WebSocket 协议进行。

通过new WebSocket(url)发出的浏览器头请求

如下:

    • Origin:客户端页面的来源,例如 https://localhost:44378。WebSocket 对象本质上是跨域的。
• 连接:升级——表示客户端想要更改协议。
• 升级:websocket – 请求的协议是“websocket”。
• Sec-WebSocket-Key:浏览器生成的随机密钥,以确保安全。
• Sec-WebSocket-Version : 13,WebSocket 协议版本。

当服务器同意切换到WebSocket时,会发送响应码101,如下所示:

握手完成后,客户端或服务器就可以开始发送数据。

通过使用 WebSocket,我们可以传输任意数量的数据,而无需承担传统 HTTP 请求带来的开销。数据以消息的形式通过 WebSocket 进行传输 。

现在我们已经详细了解了 WebSocket,让我们使用 Asp.Net MVC Core Web 应用程序创建一个示例应用程序并按照以下步骤操作:

1.打开Visual Studio 2019并使用“Asp.Net MVC Core”模板创建一个Web应用程序。

2.应用程序创建后,它将具有以下文件夹结构:

3.移动到 wwwroot\js 目录并创建一个 js 文件或打开 site.js 文件。

4.现在让我们在其中添加以下代码:

5.现在,打开 Startup.cs 文件并在其中添加以下代码:

6.现在转到 HomeController.cs 并在其中添加以下方法:

就是这样,您的第一个 WebSocket 应用程序已准备就绪,让我们构建并运行它以查看结果:

正如您在上图中所看到的,通信已经开始,我们能够发送和接收消息。

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/89731.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89731.shtml

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

相关文章

车载刷写框架 --- 关于私有节点刷写失败未报引起的反思

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

ABP VNext + GitHub Actions:CI/CD 全流程自动化

🌟 ABP VNext GitHub Actions:CI/CD 全流程自动化 📚 目录🌟 ABP VNext GitHub Actions:CI/CD 全流程自动化🤩 TL;DR🔄 全局流程概览1️⃣ 准备工作与项目结构1.1 🛠️ 工具链与 S…

Elasticsearch 重命名索引

作者:来自 Elastic Alex Salgado 学习如何使用四种实用方法在 Elasticsearch 中重命名索引。 想获得 Elastic 认证?看看下一期 Elasticsearch Engineer 培训什么时候开始! Elasticsearch 拥有丰富的新功能,帮助你根据使用场景构建…

高通8255 Android Virtio Virtio-SPI 配置方法

目录 一:VirtIO和Passthrough的区别 二:配置逻辑 三:配置方法 步骤一:QNX SPI资源配置 & 测试 配置 测试 步骤二:BE配置 &测试 配置 测试 步骤三:Hypervisor配置 配置 测试 步骤四&…

从零手写红黑树(C++实现详解)

目录 一、红黑树概述 二、红黑树节点设计 (1)枚举红黑 (2)红黑树的节点设计 三、红黑树核心实现:Insert 1.首先将节点遍历到对应位置创建对应节点并插入到二叉搜索树对应的位置 2.本文重点的重点 (1)parent为黑时直接插入即…

【黄山派-SF32LB52】—硬件原理图学习笔记

目录 一、硬件介绍 二、芯片主控 1.模组介绍 2.原理图介绍 3.模组供电电路 三、电源转换部分 1.OVP过压保护电路 2.CHG充电电路 3.系统电源桥接电路 4.LDO电路 四、Debug电路 1.一键下载电路 五、QSPI屏幕 六、SD卡 七、AUDIO音频 八、GPIO电路 1.按键部分…

从五次方程到计算机:数学抽象如何塑造现代计算

引言 数学的发展往往始于一个具体的问题,而后在寻求解答的过程中,催生出深刻的抽象理论。从五次方程的求解到抽象代数,再到范畴论和λ演算,最终影响图灵机和现代计算机的设计,这一历程展现了数学如何从实际问题演变为通…

剧本杀小程序开发:科技赋能,重塑推理娱乐新形态

在科技飞速发展的今天,各个行业都在积极探索与科技的融合,以实现创新发展。剧本杀行业也不例外,剧本杀小程序的开发,正是科技赋能传统娱乐的生动体现,它重塑了推理娱乐的新形态,为玩家带来了前所未有的游戏…

机器学习sklearn入门:归一化和标准化

bg:归一化(Normalization)通常指将数据按比例缩放至某个特定范围,但具体范围并不一定是固定的 0到1。标准化是将数据转换成均值为0,标准差为1的分布。使用场景:用归一化:需要严格限定范围&#…

【Project】kafka+flume+davinci广告点击实时分析系统

一、项目需求分析 某电商平台需实现广告实时点击分析系统,核心需求为实时统计以下内容的Top10: 各个广告的点击量各个省份的广告点击量各个城市的广告点击量 通过实时掌握广告投放效果,为广告投放策略调整和大规模投入提供依据,以…

JAVA后端开发——success(data) vs toAjax(rows): 何时用

toAjax(int rows)用途:用于不返回任何数据的 “写” 操作(增、删、改)。工作原理:它只接收一个 int 类型的参数(通常是数据库操作影响的行数)。它只关心这个数字是不是大于0,然后返回一个通用的…

pdf格式怎么提取其中一部分张页?

想从PDF里提取几个页面,办法还挺多的,下面给你唠唠常见的几种,保准你一看就懂。一、用专业PDF编辑软件提取 像Adobe Acrobat,这可是PDF编辑界的“老手”了。你先把要处理的PDF文件在Adobe Acrobat里打开,接着找到菜单栏…

Spring监听器

1、监听器的原理 ApplicationListener<T>是Spring框架中基于观察者模式实现的事件监听接口&#xff0c;用于监听应用程序中特定类型的事件。该接口是一个函数式接口&#xff0c;从Spring 4.2开始支持Lambda表达式实现。 接口定义如下&#xff1a; FunctionalInterface …

基于Rust游戏引擎实践(Game)

Rust游戏引擎推荐 以下是一些流行的Rust游戏引擎,适用于不同开发需求: Bevy 特点:数据驱动、模块化设计,支持ECS架构,适合初学者和复杂项目。 适用场景:2D/3D游戏、原型开发。 Amethyst 特点:成熟的ECS框架,支持多线程,社区活跃。 适用场景:大型游戏或高性能应用。…

PyTorch 数据加载实战:从 CSV 到图像的全流程解析

目录 一、PyTorch 数据加载的核心组件 1.1 Dataset 类的核心方法 1.2 DataLoader 的作用 二、加载 CSV 数据实战 2.1 自定义 CSV 数据集 2.2 使用 TensorDataset 快速加载 三、加载图像数据实战 3.1 自定义图像数据集 3.2 使用 ImageFolder 快速加载 四、加载官方数据…

程序人生,开启2025下半年

时光匆匆&#xff0c;2025年已然过去一半。转眼来到了7月份。 回望过去上半年&#xff0c;可能你也经历了职场的浮沉、生活的跌宕、家庭的变故。 而下半年&#xff0c;生活依旧充满了各种变数。 大环境的起起伏伏、生活节奏的加快&#xff0c;都让未来的不确定性愈发凸显。 在这…

在 .NET Core 中创建 Web Socket API

要在 ASP.NET Core 中创建 WebSocket API&#xff0c;您可以按照以下步骤操作&#xff1a;设置新的 ASP.NET Core 项目打开 Visual Studio 或您喜欢的 IDE。 创建一个新的 ASP.NET Core Web 应用程序项目。 选择API模板&#xff0c;因为这将成为您的 WebSocket API 的基础。在启…

Python 之地址编码识别

根据输入地址&#xff0c;利用已有的地址编码文件&#xff0c;构造处理规则策略识别地址的编码。 lib/address.json 地址编码文件&#xff08;这个文件太大&#xff0c;博客里放不下&#xff0c;需要的话可以到 gitcode 仓库获取&#xff1a;https://gitcode.com/TomorrowAndT…

kafka的部署

目录 一、kafka简介 1.1、概述 1.2、消息系统介绍 1.3、点对点消息传递模式 1.4、发布-订阅消息传递模式 二、kafka术语解释 2.1、结构概述 2.2、broker 2.3、topic 2.4、producer 2.5、consumer 2.6、consumer group 2.7、leader 2.8、follower 2.9、partition…

小语种OCR识别技术实现原理

小语种OCR&#xff08;光学字符识别&#xff09;技术的实现原理涉及计算机视觉、自然语言处理&#xff08;NLP&#xff09;和深度学习等多个领域的融合&#xff0c;其核心目标是让计算机能够准确识别并理解不同语言的印刷或手写文本。以下是其关键技术实现原理的详细解析&#…