firemail
标题:
aria2c进程是如何把每个文件的下载进度通知给Motrix的
[打印本页]
作者:
Qter
时间:
2024-10-31 19:48
标题:
aria2c进程是如何把每个文件的下载进度通知给Motrix的
aria2c 通过 JSON-RPC 协议向 Motrix 通知下载进度,具体工作流程如下:
1. 通信建立:
- Motrix 启动时会启动 aria2c,并指定 JSON-RPC 监听端口(默认是 16800)
- Motrix 作为客户端,与 aria2c 的 JSON-RPC 服务建立 WebSocket 连接
- 使用 WebSocket 而不是 HTTP 是为了支持实时通知机制
2. 进度通知机制:
```javascript
// aria2c 发送的通知格式大致如下
{
"jsonrpc": "2.0",
"method": "aria2.onDownloadProgress",
"params": [{
"gid": "xxx", // 下载任务的唯一标识符
"completedLength": "123456", // 已完成字节数
"totalLength": "789012", // 总字节数
"downloadSpeed": "1024", // 当前下载速度
"uploadSpeed": "0", // 上传速度(BT下载时有用)
"connections": "5", // 当前连接数
"status": "active" // 下载状态
}]
}
```
3. 通知频率:
- aria2c 默认每秒更新一次下载进度
- 可以通过配置参数 `--summary-interval` 调整更新间隔
- 实际更新频率也受网络状况影响
4. 状态监控:
- Motrix 通过这些通知实时更新界面显示:
- 下载速度
- 进度条
- 文件大小
- 剩余时间
- 连接数等信息
5. 错误处理:
- 如果下载出错,aria2c 也会通过 JSON-RPC 发送错误通知
- Motrix 收到错误通知后会更新任务状态并显示错误信息
6. 其他通知类型:
```javascript
// aria2c 还会发送其他类型的通知,例如:
- aria2.onDownloadStart // 下载开始
- aria2.onDownloadPause // 下载暂停
- aria2.onDownloadStop // 下载停止
- aria2.onDownloadComplete // 下载完成
- aria2.onDownloadError // 下载出错
```
这种基于 WebSocket 的实时通知机制让 Motrix 能够及时反映下载状态的变化,提供流畅的用户体验。同时,由于使用标准的 JSON-RPC 协议,这也使得其他第三方工具可以方便地与 aria2c 集成。
欢迎光临 firemail (http://firemail.wang:8088/)
Powered by Discuz! X3