# mock-test **Repository Path**: junweizhou/mock-test ## Basic Information - **Project Name**: mock-test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-11 - **Last Updated**: 2026-08-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MQTT 客户端 Python 后端 + Vue 前端的 MQTT 客户端工具,支持通过 Web 界面配置连接、订阅 Topic、发布消息,并实时展示收到的消息。 ## 架构 - **后端**:FastAPI + paho-mqtt,提供 REST API 和 WebSocket 实时推送 - **前端**:Vue 3 + Vite,暗色主题配置界面 ## 快速启动 ### 后端 ```bash cd backend py -m venv venv .\venv\Scripts\activate # Windows # source venv/bin/activate # Linux/macOS pip install -r requirements.txt python main.py ``` > 如果已创建过虚拟环境,只需要重新执行 `pip install -r requirements.txt` 更新依赖。 服务运行在 `http://localhost:8765`。 ### 前端 ```bash cd frontend npm install npm run dev ``` 访问 `http://localhost:3000`,Vite 会自动代理 API 请求到后端。 ## 功能 - 配置 Broker 地址、端口、Client ID、认证信息 - 订阅/取消订阅 Topic(支持通配符) - 发布消息(支持 QoS、Retain) - 自动响应网关 RPC:订阅收到 `v1/gateway/rpc` 后,会按请求里的 `device` 和 `data.id` 自动回复 `{"device":"...","id":7,"data":{"success":true}}` - 动态消息体模板:消息体 JSON 支持 `{{random_int(1,100)}}`、`{{random_float(20,45,1)}}`、`{{random_str(8)}}`,手动发送和压测都会在每次发送时重新生成 - 压力测试模式:左侧勾选多个 MQTT 连接后并发启动,并统计目标、已创建、已连接、失败和发布次数 ## 动态消息体示例 在消息体 JSON 里可以直接写动态模板: ```json { "soc": "{{random_int(30,100)}}", "temperature": "{{random_float(20,45,1)}}", "trace_id": "{{random_str(8)}}" } ``` 如果整个字段值就是模板,发送时会替换成对应类型;如果模板写在普通字符串里,会替换成字符串片段。 ## 100 连接压测用法 1. 启动后端和前端。 2. 在左侧 `连接` 列表维护网关连接: - 点击 `+` 新增连接 - 勾选需要参与压测的连接 - 点击连接项后,在右侧修改名称、Client ID、用户名、密码、起始机器人编号、机器人数量和该连接的消息体 JSON - 点击 `复制连接` 复制当前连接;复制后 Client ID 会清空,避免冲突 - 点击 `删除连接` 删除当前连接 3. 在右侧 `连接配置` 中填写 Broker 地址、端口、默认密码、Keep Alive、设备ID前缀、站点编号、区域编号等基础参数。 4. 在底部发布区设置: - 发布 Topic,或填写 `压测 Topic` - 当前选中连接的消息体 JSON;压测时每个连接会使用各自保存的消息体 5. 点击右上角 `压测`,在弹窗里填写 `定时消息发送间隔(毫秒)`,例如 `1000`。 6. 点击 `确定执行` 后,后端会对左侧已勾选连接并发启动,并按填写间隔循环发送消息。 7. 测试完成后点击 `停止` 释放连接。 设备 ID 生成规则: ```text 设备ID = 设备ID前缀 + 站点编号4位 + 区域编号4位 + 设备编号4位 ``` 例如设备ID前缀 `7688`、站点 `26`、区域 `1`、设备 `2` 会生成:`7688002600010002`。设备ID前缀可在连接配置里输入。 100 个 MQTT 连接、每个连接 100 个设备时,设备分配如下: - 第 1 个 MQTT:设备 `1-100` - 第 2 个 MQTT:设备 `101-200` - 第 100 个 MQTT:设备 `9901-10000`