一个现代化的 Mica MQTT 服务器管理界面,基于 Vue 3 + Vite + TypeScript 构建。
- 实时显示服务器统计信息
- 在线客户端数量
- 总消息数和订阅数
- 最近连接的客户端列表
- 分页显示所有客户端
- 客户端搜索和筛选
- 查看客户端详细信息
- 踢出指定客户端
- 客户端订阅管理
- 实时系统监控
- 客户端连接数趋势图
- 可配置的监控数据保留
- 实时数据更新
- 基于 WebSocket 的 MQTT 连接
- 实时消息收发
- 主题订阅管理
- 消息过滤和搜索
- 支持 QoS 0/1/2
- 保留消息支持
- 前端框架: Vue 3 + TypeScript
- 构建工具: Vite
- UI 组件库: Element Plus
- 状态管理: Pinia
- 路由: Vue Router
- 图表: ECharts
- MQTT 客户端: mqtt.js
- HTTP 客户端: Axios
- 包管理器: pnpm
- Node.js >= 16.0.0
- pnpm >= 8.0.0
pnpm install修改配置项:
# API 配置
VITE_API_BASE_URL=
# MQTT 连接配置
VITE_MQTT_HOST=localhost
VITE_MQTT_PORT=8083
VITE_MQTT_CLIENT_ID_PREFIX=mica_web_pnpm devpnpm buildpnpm preview项目支持通过环境变量配置连接参数:
| 变量名 | 说明 | 默认值 |
|---|---|---|
VITE_API_BASE_URL |
API 服务器地址 | http://localhost:18083 |
VITE_MQTT_HOST |
MQTT WebSocket 主机 | localhost |
VITE_MQTT_PORT |
MQTT WebSocket 端口 | 8083 |
VITE_MQTT_CLIENT_ID_PREFIX |
MQTT 客户端ID前缀 | mica_web_ |
开发环境下,Vite 会自动代理 API 请求。如需修改代理地址,请编辑 vite.config.ts 文件:
server: {
proxy: {
'/api': {
target: 'http://your-mqtt-server:18083', // 修改为你的 MQTT 服务器地址
changeOrigin: true
}
}
}通过登录页面输入用户名和密码即可进行认证。认证信息会保存在浏览器的 localStorage 中。
mica-mqtt-dashboard/
├── src/
│ ├── components/ # 公共组件
│ ├── stores/ # Pinia 状态管理
│ │ ├── app.ts # 应用状态
│ │ ├── client.ts # 客户端管理
│ │ ├── monitor.ts # 监控状态
│ │ └── debug.ts # 调试状态
│ ├── utils/ # 工具函数
│ │ ├── api.ts # API 请求封装
│ │ └── format.ts # 格式化工具
│ ├── views/ # 页面组件
│ │ ├── Layout.vue # 布局组件
│ │ ├── Dashboard.vue # 仪表盘
│ │ ├── Clients.vue # 客户端管理
│ │ ├── ClientDetail.vue # 客户端详情
│ │ ├── Monitor.vue # 状态监控
│ │ └── Debug.vue # MQTT 调试
│ ├── router/ # 路由配置
│ ├── App.vue # 根组件
│ └── main.ts # 入口文件
├── public/ # 静态资源
├── package.json
├── vite.config.ts # Vite 配置
├── tsconfig.json # TypeScript 配置
└── README.md
项目基于 Mica MQTT 的 HTTP API 接口,主要使用以下接口:
GET /api/v1/endpoints- 获取所有 API 接口GET /api/v1/clients- 获取客户端列表GET /api/v1/clients/info- 获取客户端详情GET /api/v1/client/subscriptions- 获取客户端订阅POST /api/v1/clients/delete- 踢出客户端POST /api/v1/mqtt/publish- 发布消息POST /api/v1/mqtt/subscribe- 订阅主题POST /api/v1/mqtt/unsubscribe- 取消订阅GET /api/v1/stats- 获取统计信息
- 在
src/views/目录下创建新的 Vue 组件 - 在
src/router/index.ts中添加路由配置 - 在
src/views/Layout.vue中添加导航菜单项
- 在
src/stores/目录下创建新的 store 文件 - 在
src/stores/index.ts中导出新的 store - 在组件中使用
useStoreName()获取状态
- 在
src/utils/api.ts中添加新的 API 方法 - 在对应的 store 中调用 API 方法
- 在组件中使用 store 中的方法
pnpm build构建完成后,将 dist 目录部署到 Web 服务器。
server {
listen 80;
server_name your-domain.com;
location / {
root /path/to/dist;
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://your-mqtt-server:18083;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}本项目采用 Apache 2.0 许可证 - 查看 LICENSE 文件了解详情。
如有问题或建议,请提交 Issue 或联系开发团队。