使用 Hyperlane 框架的 WebSocket 功能

news/2025/3/22 1:24:05/
http://www.w3.org/2000/svg" style="display: none;">

使用 Hyperlane 框架的 WebSocket 功能

概述

hyperlane 是一个轻量级且高性能的 Rust HTTP 服务器库,支持 HTTP 请求解析、响应构建、TCP 通信,同时也支持 WebSocket 和 SSE 等实时通信协议。hyperlane 框架内置了 WebSocket 支持,能够自动处理协议升级,并支持请求中间件、路由处理和响应中间件。

在本篇博客中,我们将介绍如何使用 hyperlane 框架实现 WebSocket 服务,并编写相应的客户端代码进行测试。

WebSocket 服务器端实现

hyperlane 中,WebSocket 服务器端的实现非常简单。hyperlane 框架提供了 send_response_body 方法来正确处理 WebSocket 数据流,确保客户端可以正常解析。

服务器端代码示例

rust">pub async fn handle(controller_data: ControllerData) {let request_body: Vec<u8> = controller_data.get_request_body().await;let _ = controller_data.send_response_body(request_body).await;
}

代码解析

  • controller_data.get_request_body().await:从客户端接收 WebSocket 消息数据。
  • controller_data.send_response_body(request_body).await:将接收到的数据回传给客户端。

重要注意事项

hyperlane 框架提供了多个响应方法,例如 send_responseclose 等。但是对于 WebSocket 连接,必须 使用 send_response_body 方法,否则客户端解析会出现问题。因为 WebSocket 连接需要特定的协议处理,只有 send_response_body 能够确保符合 WebSocket 规范。

WebSocket 客户端实现

在客户端,我们可以使用浏览器自带的 WebSocket API 进行通信。

客户端代码示例

const ws = new WebSocket('ws://localhost:60000/websocket');ws.onopen = () => {console.log('WebSocket opened');setInterval(() => {ws.send(`Now time: ${new Date().toISOString()}`);}, 1000);
};ws.onmessage = (event) => {console.log('Receive: ', event.data);
};ws.onerror = (error) => {console.error('WebSocket error: ', error);
};ws.onclose = () => {console.log('WebSocket closed');
};

代码解析

  • new WebSocket('ws://localhost:60000/websocket'):建立 WebSocket 连接。
  • ws.onopen:连接成功后,每秒发送当前时间。
  • ws.onmessage:接收服务器返回的消息并打印。
  • ws.onerror:处理 WebSocket 连接中的错误。
  • ws.onclose:处理 WebSocket 连接关闭的情况。

运行示例

  1. 启动 hyperlane 服务器
  2. 在浏览器控制台或 Node.js 环境中运行客户端代码。
  3. 观察客户端收到的 WebSocket 消息。

结论

hyperlane 框架为 WebSocket 提供了简单高效的支持,开发者只需要处理 ControllerData 并调用 send_response_body 方法即可完成 WebSocket 通信。同时,客户端可以使用标准 WebSocket API 进行交互,实现实时通信。

通过本篇博客,你应该能够理解 hyperlane 框架中 WebSocket 的基本使用方法,并可以在自己的项目中进行实践。

推荐几款学习编程的免费平台

免费在线开发平台(https://docs.ltpp.vip/LTPP/" rel="nofollow">https://docs.ltpp.vip/LTPP/)

       探索编程世界的新天地,为学生和开发者精心打造的编程平台,现已盛大开启!这个平台汇集了近4000道精心设计的编程题目,覆盖了C、C++、JavaScript、TypeScript、Go、Rust、PHP、Java、Ruby、Python3以及C#等众多编程语言,为您的编程学习之旅提供了一个全面而丰富的实践环境。       
      在这里,您不仅可以查看自己的代码记录,还能轻松地在云端保存和运行代码,让编程变得更加便捷。平台还提供了私聊和群聊功能,让您可以与同行们无障碍交流,分享文件,共同进步。不仅如此,您还可以通过阅读文章、参与问答板块和在线商店,进一步拓展您的知识边界。
       为了提升您的编程技能,平台还设有每日一题、精选题单以及激动人心的编程竞赛,这些都是备考编程考试的绝佳资源。更令人兴奋的是,您还可以自定义系统UI,选择视频或图片作为背景,打造一个完全个性化的编码环境,让您的编程之旅既有趣又充满挑战。

https://i-blog.csdnimg.cn/img_convert/09e1e7dab93e363e19ada6783151cbe5.png" alt="" />

免费公益服务器https://docs.ltpp.vip/LTPP-SHARE/linux.html" rel="nofollow">https://docs.ltpp.vip/LTPP-SHARE/linux.html)

       作为开发者或学生,您是否经常因为搭建和维护编程环境而感到头疼?现在,您不必再为此烦恼,因为一款全新的免费公共服务器已经为您解决了所有问题。这款服务器内置了多种编程语言的编程环境,并且配备了功能强大的在线版VS Code,让您可以随时随地在线编写代码,无需进行任何复杂的配置。
随时随地,云端编码
       无论您身在何处,只要有网络连接,就可以通过浏览器访问这款公共服务器,开始您的编程之旅。这种云端编码的便利性,让您的学习或开发工作不再受限于特定的设备或环境。
丰富的编程语言支持
       服务器支持包括C、C++、JavaScript、TypeScript、Go、Rust、PHP、Java、Ruby、Python3以及C#等在内的多种主流编程语言,满足不同开发者和学生的需求。无论您是初学者还是资深开发者,都能找到适合自己的编程环境。
在线版VS Code,高效开发
       内置的在线版VS Code提供了与本地VS Code相似的编辑体验,包括代码高亮、智能提示、代码调试等功能,让您即使在云端也能享受到高效的开发体验。
数据隐私和安全提醒
       虽然服务器是免费的,但为了保护您的数据隐私和安全,我们建议您不要上传任何敏感或重要的数据。这款服务器更适合用于学习和实验,而非存储重要信息。

https://i-blog.csdnimg.cn/img_convert/e33bf4d657f4a4e21c416a4ce34d97ee.png" alt="" />

免费公益MYSQL(https://docs.ltpp.vip/LTPP-SHARE/mysql.html" rel="nofollow">https://docs.ltpp.vip/LTPP-SHARE/mysql.html)

       作为一名开发者或学生,数据库环境的搭建和维护往往是一个复杂且耗时的过程。但不用担心,现在有一款免费的MySQL服务器,专为解决您的烦恼而设计,让数据库的使用变得简单而高效。
性能卓越,满足需求
       虽然它是免费的,但性能绝不打折。服务器提供了稳定且高效的数据库服务,能够满足大多数开发和学习场景的需求。
在线phpMyAdmin,管理更便捷
       内置的在线phpMyAdmin管理面板,提供了一个直观且功能强大的用户界面,让您可以轻松地查看、编辑和管理数据库。
数据隐私提醒,安全第一
       正如您所知,这是一项公共资源,因此我们强烈建议不要上传任何敏感或重要的数据。请将此服务器仅用于学习和实验目的,以确保您的数据安全。

https://i-blog.csdnimg.cn/img_convert/62bc0465ef08ef6c3ff8beb74b6a03b5.png" alt="" />

https://i-blog.csdnimg.cn/img_convert/4f5622b68f3192f98235834d40272b33.png" alt="" />

免费在线WEB代码编辑器(https://docs.ltpp.vip/LTPP-WEB-IDE/" rel="nofollow">https://docs.ltpp.vip/LTPP-WEB-IDE/)

       无论你是开发者还是学生,编程环境的搭建和管理可能会占用你宝贵的时间和精力。现在,有一款强大的免费在线代码编辑器,支持多种编程语言,让您可以随时随地编写和运行代码,提升编程效率,专注于创意和开发。
多语言支持,无缝切换
       这款在线代码编辑器支持包括C、C++、JavaScript、TypeScript、Go、Rust、PHP、Java、Ruby、Python3以及C#在内的多种编程语言,无论您的项目需要哪种语言,都能在这里找到支持。
在线运行,快速定位问题
       您可以在编写代码的同时,即时运行并查看结果,快速定位并解决问题,提高开发效率。
代码高亮与智能提示
       编辑器提供代码高亮和智能提示功能,帮助您更快地编写代码,减少错误,提升编码质量。

https://i-blog.csdnimg.cn/img_convert/eaa779060b3e2c26edf89d1302893cf0.png" alt="" />

https://i-blog.csdnimg.cn/img_convert/03ba38ed40675667afa2444fbd5f4219.png" alt="" />

免费二维码生成器(https://docs.ltpp.vip/LTPP-QRCODE/" rel="nofollow">https://docs.ltpp.vip/LTPP-QRCODE/)

       二维码(QR Code)是一种二维条码,能够存储更多信息,并且可以通过智能手机等设备快速扫描识别。它广泛应用于各种场景,如:
企业宣传
       企业可以通过二维码分享公司网站、产品信息、服务介绍等。
活动推广
       活动组织者可以创建二维码,参与者扫描后可以直接访问活动详情、报名链接或获取电子门票。
个人信息分享
       个人可以生成包含联系方式、社交媒体链接、个人简历等信息的二维码。
电子商务
       商家使用二维码进行商品追踪、促销活动、在线支付等。
教育
       教师可以创建二维码,学生扫描后可以直接访问学习资料或在线课程。
交通出行
       二维码用于公共交通的票务系统,乘客扫描二维码即可进出站或支付车费。        功能强大的二维码生成器通常具备用户界面友好,操作简单,即使是初学者也能快速上手和生成的二维码可以在各种设备和操作系统上扫描识别的特点。

https://i-blog.csdnimg.cn/img_convert/d6a6153f19601b0ace1ac1b36d9584f4.png" alt="" />


http://www.ppmy.cn/news/1581024.html

相关文章

Spark 中的Shuffle过程

Shuffle是Spark中一个非常重要的概念&#xff0c;但它也是一个昂贵的操作。以下是对Shuffle过程的详细解释以及它为什么昂贵的原因。 1. 什么是Shuffle&#xff1f; Shuffle是Spark中重新分配数据的过程&#xff0c;通常发生在需要对数据进行重新分组或聚合的操作中&#xff0…

批量文件分析器:使用Python从PPT和PDF中提取文本

批量文件分析器&#xff1a;从PPT和PDF中提取文本 &#x1f4f0;&#x1f50d; 你好&#xff0c;小伙伴们&#xff01;今天我们来聊聊如何批量处理和分析PDF与PPT文件内容。我们会使用一个Python脚本&#xff0c;帮你提取文件的文本内容。此工具特别适合需要处理大量文档的朋友…

HW华为流程管理体系精髓提炼华为流程运营体系(124页PPT)(文末有下载方式)

资料解读&#xff1a;HW华为流程管理体系精髓提炼华为流程运营体系&#xff08;124页PPT&#xff09; 详细资料请看本解读文章的最后内容。 华为作为全球领先的科技公司&#xff0c;其流程管理体系的构建与运营是其成功的关键之一。本文将从华为流程管理体系的核心理念、构建…

信号处理等相关知识点

TDNN(时延神经网络)--CNN神经网络的基础 普通神经网络: 只包含一帧的特征向量 MFCC :用于语音特征提取的算法,提取出音色(很能区分不同人的说话声音)。 TDNN 滤波器:重要特征提取。 迁移学习 小波散射变换 (WST) 小波变换--傅里叶时间无限-》时间局域 点乘:求向…

汽车一键启动系统使用方便,舒适出行,轻松匹配

汽车一键启动系统 系统定义 移动管家汽车一键启动系统是装置在智能汽车上的一部分&#xff0c;是实现简约打火和熄火过程的一个按钮装置。它可以在原车钥匙锁头的位置改装&#xff0c;也能独立面板改装&#xff0c;现在很多高低配置的车辆都可安装。 功能特点 基本功能 启…

数组模拟邻接表 #图论

文章目录 为什么要用数组来模拟邻接表存储思路遍历思路 树是特殊的图&#xff0c;因此邻接表可以存储图和树两种数据结构。 为什么要用数组来模拟邻接表 在算法设计当中&#xff0c;利用数组来代替结构体模拟各种数据结构会更加简单。 存储思路 给定如下数据,我们可以构造如…

基于微信小程序的充电桩管理系统

一、开发背景 在开发充电汽车管理系统之前&#xff0c;深入的需求分析至关重要。我们要充分了解不同用户群体的需求&#xff0c;比如私家车主希望充电过程便捷、高效、安全&#xff0c;能够实时查看充电状态和费用明细&#xff1b;出租车、网约车司机则更注重充电速度和充电桩…

设计模式,如单例模式、观察者模式在什么场景下使用

以下是单例模式和观察者模式的介绍及应用场景&#xff1a; 单例模式 - 定义&#xff1a;保证一个类仅有一个实例&#xff0c;并提供一个全局访问点。 - 实现方式&#xff1a;私有化构造函数&#xff0c;防止外部实例化&#xff1b;提供一个静态成员函数来获取唯一实例。 - 应用…