- 作者:老汪软件技巧
- 发表时间:2024-08-30 07:02
- 浏览量:
在开发 TCP 应用时,如果服务端尚未完成,可以使用 Bittly 在本地创建一个模拟的 TCP 服务端。通过配置自动响应规则,Bittly 会自动处理客户端请求,模拟出真实的 TCP 服务端行为,并且随着服务端逐步完善,可以将这些请求逐步转发到真实的服务器,帮助开发者实现客户端与服务端的无缝对接。
准备工作
开始之前,请确保已安装 Bittly 最新版本,本文基于版本 1.17.17 进行说明。下载地址可以从 Bittly 获取。
启动一个 TCP 服务端
首先,在 Bittly 中新建一个 TCP 服务端。如果只需要本地访问,可以使用默认配置,直接点击启动按钮。在 Bittly 的默认配置中,新建的模拟服务会自动生成一个 ECHO 规则,即收到的任何内容都会原封不动地发送回去。
如下图所示, 当客户端发送 {"action":"login"} 之后, 因为匹配到第一条规则, 所以自动回复了 {"action":"login"} 给客户端。
手动发送消息内容
除用于自动响应的匹配规则之外, 如果需要主动发消息给客户端, 可通过 片段 以及 手动 来实现。
在手动模式下, 需要手动编辑需要发送的内容, 然后通过点击发送按钮将数据内容发送给客户端。 例如:
片段模式则可以看作是手动模式的收藏夹, 将需要发送的数据内容保存起来,通过点击对应的发送按钮来发送不同的消息内容给客户端, 例如:
片段的内容为消息内容的模板,您可以在该模板中通过 {{ 表达式 }} 的当时来引用变量或者调用全局函数或者自定义函数,例如:
在发送消息前, Bittly 会先将消息模板进行编译为真正的消息内容, 然后再将其发送到客户端,从而实现自动生成动态内容。
配置自动响应规则
在实际应用中,我们通常需要对请求内容进行特定响应。这可以通过在 Bittly 中配置请求匹配规则来实现。Bittly 会根据配置的规则自动响应客户端的请求。
例如,如果我们希望对客户端发送的 hello 进行响应,让 Bittly 自动回复 world,可以按照如下配置规则:
创建一个新的响应规则,匹配类型选择为 文本 用于匹配基于文本的消息数据, 设置匹配内容为 hello。设置响应类型为文本, 并将响应内容为 world。
配置完成后,重启服务并测试。当客户端发送 hello 时,Bittly 会自动回复 world, 例如:
需要注意的是,添加新的请求时需要将默认的 ECHO 规则禁用或者删除掉。 因为 Bittly 匹配规则时,一旦匹配成功某一规则后,则不再继续匹配后续规则。
动态数据和脚本的使用
在 Bittly 中, 可通过变量或脚本来实现动态数据的响应功能。 其中变量在服务启动时根据配置信息自动进行初始化操作, 并在服务结束后自动进行销毁。 脚本则可用于在服务生命周期中实现回调或者通过实现自定义函数在消息模板中进行调用。
新建变量可点击变量管理部分的添加按钮, 在打开的弹框中编辑变量名称,数据类型以及默认值即可, 在服务启动后, Bittly 会根据指定的默认值数据来初始化变量。
在配置匹配规则或片段的消息模板时, 可通过 $var("变量名") 的方式来引用变量。 例如, 假设温度值为 100 :
temp = {{$var("温度")}}
则实际发送内容为 :
temp = 100
如果需要在初始化的时候对变量执行复杂的复制操作,或者在取值的时候需要进行其他处理,例如取整或者保留指定位数小数等, 则可通过脚本进行处理, 例如:
这样,在消息模板中引用 {{currentTemp()}} 时,则会通过自定义函数 currentTemp 来进行处理温度值后再赋值给模板。
请求转发
请求转发用于将来自客户端的请求转发到其他通讯连接上, 请求转发不限于 TCP 连接, 对于所有支持的通讯类型都可以进行转发, 例如, TCP 转发到串口, UDP, 蓝牙, WebSocket 等支持数据流通讯模式的通讯连接, 并支持将收到的响应内容回复给对应的客户端连接, 例如:
另外, 当启用 Bittly 的转发功能时,仅会转发未匹配任何响应规则的请求, 如果请求被匹配规则处理,则不会再继续执行转发操作。 所以,如果真实服务器已经实现了部分接口后, 可将对应的响应规则禁用后, 交由后台Bittly 转发后进行处理,对于服务器未实现的接口,可任然由 Bittly 模拟, 从而实现模拟服务器与真实服务器的平稳替换。
总结
使用 Bittly 模拟 TCP 服务端,您可以轻松构建和测试客户端逻辑,而无需等待服务端完全开发完成。Bittly 提供的自动响应规则、动态数据处理、以及请求转发功能,使得开发过程更加高效。
通过本文的指导,您应该能够创建一个基本的 TCP 服务端模拟,并逐步配置自动响应和脚本处理。如果遇到问题或有新的想法,欢迎与我分享或在评论区讨论。期待 Bittly 为您的 TCP 开发带来便利与效率。