首页 > 其他分享 >如何使用 Bittly 实现 UDP 请求自动响应与处理

如何使用 Bittly 实现 UDP 请求自动响应与处理

时间:2024-08-27 20:50:28浏览次数:5  
标签:UDP 匹配 Bittly 响应 JSON 内容

在开发基于 UDP 的应用时, 如果通信目标未就绪或者临时不可用时, 可以使用 Bittly 的模拟服务虚拟一个支持 UDP 通讯的通讯终端。本文将介绍如何使用Bittly工具,实现对UDP请求的自动响应、动态数据处理、数据分帧以及数据转发。我们将从服务的准备工作开始,逐步讲解每一个步骤,帮助你快速搭建一个高效的UDP请求处理模拟服务。

准备

在开始之前,请确保您已经安装了Bittly工具。如果还没有安装,可以通过以下链接进行下载 Bittly 并安装 :

Bittly 下载 - 开始使用 Bittly 设计、开发和管理您的数据交互

新建并启动服务

新建 UDP 的模拟服务可通过点击模拟服务模块边侧栏顶部的 + (新建) 按钮, 并在打开的新标签中选择 UDP 模拟服务即可完成 UDP 模拟服务的创建。 新建的模拟服务默认以本地服务进行通讯配置。

当服务创建后,会自动创建一条默认匹配响应规则, 即当服务收到任何数据后都直接将收到的内容直接响应给客户端,您可通过该规则来验证服务是否正常。

在这里插入图片描述

自动响应

自动响应是为了在 Bittly 收到消息内容后, 根据配置的匹配响应规则自动生成响应内容并发送给消息来源终端。

例如,假设我们希望 Bittly 在收到 hello 后,自动将 how are you 响应给消息发送端, 则我们可以进行如下配置:

在这里插入图片描述

在配置完成新规则后,需要重新启用服务来应用上面配置的响应规则。 然后,当我们再次发送 hello 到 Bittly 时,Bittly 便会根据我们配置的这条规则自动响应 how are you 给消息来源终端。

Bittly 的匹配类型支持多种, 例如文本,HEX, 通配符 ,正则表达式, JSON,表达式等。您可根据您具体的需要来选择不同的匹配方法, 我们以 JSON 为例:

在这里插入图片描述

我们新建一条匹配规则, 并将 匹配类型 选择为 JSON 用来匹配 JSON 格式的消息内容。

在 Bittly 处理该匹配规则时,会将消息内容解析为JSON对象,并通过 $request 应用到匹配内容的上下文中,我们在 匹配内容 的配置中, 可以使用 $request 对象来访问 JSON数据, 例如 $request.action 则可以用于访问 JSON {"action":"login"} 中的 action 属性。匹配内容为一个有效的 javascript 表达式, 例如 $request.action === "login" 或者 $request.number < 100 等。

响应类型也同样选择 JSON 作为内容格式, 响应内容即为需要发送给目标的 JSON 内容。

动态数据

如果我们在消息发送出去之后希望每次得到的响应内容并不是一直不变的,而是希望能够根据业务需求来动态生成一些比较合理的响应内容。 例如在登录后随机响应一个 accessToken 值等。

在 Bittly 中,动态数据也是被支持的。 在匹配规则的配置中, 响应内容实际为响应数据的模板, Bittly 会先通过编辑消息模板得到真实的消息内容, 然后再将得到的真实消息内容发送出去。 在消息模板中, 我们可以调用函数或者引用变量来生成动态内容。

假设我们定义一个 用户名 变量,其值为 sige, 并且我们在响应内容中配置如下 :

hello, {{$var("用户名")}} !

那么, 实际发送出去的内容为:

hello, sige !

{{}} 所包裹的部分为动态内容,可进行函数调用或变量引用,这部分会被模板引擎进行自动替换。

在这里插入图片描述

如上图所示,响应消息中的 UUID, Random String, Random Number等 都是自动生成的, 其中, 响应内容如下:

UUID = {{uuid()}}
Random String = {{randomString(16)}}
Random Number = {{randomNumber(0,100)}}
Fake Email = {{fake('internet.email')}}

在消息模板中, 可以使用 {{$var("变量名")}} 来引用变量并输出变量值。

在模板中,如果存在比较复杂的计算或业务过程,可通过自定义函数的方式封装成函数,然后再模板中进行引用。 例如:

在这里插入图片描述

通过脚本定义完成函数后, 即可在消息模板中引用, 例如:

{{myFunction("meili")}}

假设变量 用户名 内容为 sige, 则输出消息内容如下:

hello, meili & sige

数据分帧

当收到的数据内容不完整需要等待后续数据,或者收到的内容超出需要的长度需要进行截断时,就需要使用 Bittly 的数据分帧操作。 Bittly 的数据分帧是根据您所配置的分帧规则将数据进行拼装或裁剪到可处理的数据长度。

Bittly 支持多种分帧方式, 例如固定长度, 匹配头尾, 正则表达式, JSON 等, 您可根据您的数据内容进行选择合适的分支方式。

我们以 JSON 为例 :

在这里插入图片描述

当 Bittly 收到的数据内容中包含多个 JSON 数据信息则会被自动分割并作为两次消息进行处理, 例如我们发送如下消息:

{"action":"login"}{"action":"login"}

则 Bittly 收到消息后自动分割成两次消息请求,并分别进行处理,即如上图所示。

数据转发

Bittly 数据转发的作用是将发送到 Bittly 的请求自动转发到其他通讯连接上, 并将响应内容发送回原始终端。 其工作流程如下:

在这里插入图片描述

使用数据转发功能仅需要选择对应的通讯连接即可, 例如:

在这里插入图片描述

需要注意的是, Bittly 的数据转发仅仅针对没有匹配任何响应规则的请求,即响应规则的处理优先级大于转发的优先级, 如果响应规则中存在一个匹配任意内容的规则, 则数据转发即使被启用也不会被执行。

由于匹配规则优先级大于转发的优先级, 所以在模拟 UDP 服务的同时, 可以逐步的禁用掉某些规则使其通过转发来实现业务功能, 从而实现逐步的替换模拟服务到后台真实服务中。

结束

到这里,我们了解了如何使用 Bittly 模拟一个 UDP 服务,从最基本的服务启动,到自动响应规则的配置,再到处理动态数据和脚本,以及最后如何利用请求转发功能与实际服务端进行对接。这些功能在 UDP 开发中都能极大地提高开发效率和测试效果。

在实际开发中,使用 Bittly 让我们能够快速构建并测试客户端逻辑,无需等待服务端完全开发完成。随着项目的推进,还可以探索 Bittly 的更多高级功能,比如复杂的请求处理、脚本扩展等,进一步提升开发效率。

如果你在使用 Bittly 的过程中遇到任何问题,或者有其他有趣的应用场景,欢迎在评论区与我分享。希望这篇文章对你的 UDP 开发有所帮助,也期待你的反馈与讨论。

标签:UDP,匹配,Bittly,响应,JSON,内容
From: https://blog.csdn.net/qq_35274961/article/details/141611657

相关文章

  • python如何通过Json路径返回Json响应对应的值例子解析
    在Python中,处理JSON数据通常使用标准库中的json模块来解析和操作JSON格式的数据。如果你想要通过JSON路径来获取JSON响应中的值,你可以使用第三方库,如jsonpath-ng,它允许你使用类似XPath的语法来查询JSON对象。首先,你需要安装jsonpath-ng库,可以使用pip来安装:pipinstalljs......
  • 【网络编程通关之路】 Udp 基础回显服务器(Java实现)及你不知道知识原理详解 ! ! !
    本篇会加入个人的所谓鱼式疯言❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言而是理解过并总结出来通俗易懂的大白话,小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.......
  • Nond.Js基础(2)——请求响应与HTTP协议
    目录一、请求响应与HTTP协议1、创建web服务器 2、请求与响应1、req2、res3、根据不同url地址处理请求:3、HTTP协议请求报文:get类型接口:post类型接口: 响应报文:一、请求响应与HTTP协议1、创建web服务器 //引入模块consthttp=require('http');//http.creat......
  • UE5蓝图 离线实时语音转文字插件 教程 c/c++插件 毫秒级响应 比http更节约资源
    UE5蓝图实现离线实时语音转文字插件教程如何用UE5蓝图实现离线实时语音转文字,实时接收麦克风音频并且快速的转换成文字。那么我来分享一下ez2txt这个插件。bilibili使用教程效果展示:蓝图:只要启动麦克风就可以了,其他的繁琐步骤插件都封装好了。参数说明Rule1_m......
  • 影视网站模板源码-响应式网页模板-带后台自适应整站源码
    影视网站模板源码-响应式网页模板-带后台自适应整站源码影视网站模板源码源码介绍本源码是一个响应式影视网站模板,适用于搭建电影、电视剧、动漫等视频内容的在线观看平台。模板采用HTML5、CSS3和JavaScript开发,支持自适应布局,能够在不同设备上提供良好的用户体验。后台管理......
  • SpringbootWeb请求响应和分层解耦
    目录前言一、请求(学会使用postman和接收请求参数)1.后端接口测试工具Postman(1)引入(2)介绍(3)安装和使用 2.简单参数 (1)postman发送请求测试 (2)原始方式接收(3)SpringBoot方式(4)Spingboot方式参数名不一致问题3.实体参数(1)简单实体(2)复杂实体4.数组集合参数 (1)数组(2)集......
  • 使用Vue3实现响应式表单验证
    使用Vue3实现响应式表单验证在现代Web开发中,用户交互的体验一直是开发者关注的重点之一,其中,表单验证是提升用户体验的重要环节之一。借助Vue3的强大特性,我们可以轻松地实现一个响应式的表单验证系统。本文将逐步引导你如何使用Vue3的CompositionAPI(setup语法糖)来构建一......
  • 只需六步:加速企业网络安全事件响应
        现代安全工具在保护组织网络和端点免受黑客攻击的能力不断提高。但攻击者仍然偶尔会找到进入的方法。    安全团队必须能够阻止威胁并尽快恢复正常运营,这就是为什么这些团队不仅要拥有合适的工具,还要了解如何有效应对事件的原因。通常我们可以通过自定义......
  • 使用 setResponseStatus 函数设置响应状态码
    title:使用setResponseStatus函数设置响应状态码date:2024/8/25updated:2024/8/25author:cmdragonexcerpt:通过setResponseStatus函数,你可以轻松地在Nuxt.js中设置响应的状态码。这不仅能帮助用户更好地理解发生了什么,还能在需要时显示自定义的错误页面。在实际......
  • 表达式用法,ref定义响应式,v-bind指令和图片轮播结合,class和style内联样式绑定,事件监听
    表达式用法当前时间,随机数,返回值,判断取值ref响应式使用ref赋值和普通赋值v-bind指令和图片轮播结合(v-bind可以省略成":")class和style内联样式绑定数据绑定一个常见需求是操作元素的class列表和它的内联样式两个class会用到这两个的样式,用v-bind对class里面的......