const WebSocket = require('ws');
// 创建 WebSocket 连接
const ws = new WebSocket('ws://localhost:6800/jsonrpc');
// 监听连接成功事件 更多事件参考下方表格
ws.on('open', function open() {
// 构造 JSON-RPC 请求
const request = {
jsonrpc: '2.0',
method: 'aria2.addUri',
id: 1,
params: [
// 下载链接数组,可以添加多个链接
['http://example.com/file1.mp4']
]
};
// 发送 JSON-RPC 请求给 Aria2 服务器
ws.send(JSON.stringify(request));
});
// 监听服务器返回消息事件
ws.on('message', function incoming(data) {
console.log('Server response:', data);
});
Nodejs代码
const Aria2 = require("aria2");
let options = {
host: "nas.wfsever.cn",
port: 6800,
// secure: false,
secret: "w15978859175",
path: "/jsonrpc",
};
const aria2 = new Aria2(options);
aria2.open();
aria2.on("open", () => {
console.log("已连接到Aria服务器");
});
aria2.on("close", () => {
console.log("已与Aria2服务器断开连接");
});
aria2
.call("aria2.addUri", [
"https://dldir1.qq.com/qqfile/qq/QQNT/Windows/QQ_9.9.9_240401_x64_01.exe",
])
.then((res) => {
console.log("添加任务", res);
})
.catch((err) => {
console.log(err);
});
aria2
.call("aria2.tellStatus", "97393f768e745b60")
.then(function (res) {
console.log("任务详情:", res);
})
.catch(function (err) {
console.error("获取任务详情失败:", err);
});
/**
* 事件类型
* onDownloadStart 下载开始
* onDownloadPause 下载暂停
* onDownloadStop 下载停止
* onDownloadComplete 下载完成
* onDownloadError 下载错误
* onBtDownloadComplete BT下载完成
* onDownloadComplete BT下载完成
* onBtDownloadStart BT下载开始
* onBtDownloadStop BT下载停止
* onBtDownloadPause BT下载暂停
* onBtDownloadError BT下载错误
*/
aria2.on("onDownloadStart", ([guid]) => {
console.log("aria2 onDownloadStart", guid);
});
方法 | 描述 | 参数 |
---|---|---|
aria2.addUri | 添加 HTTP/HTTPS 下载任务 | 下载链接数组 |
aria2.addTorrent | 添加 BitTorrent 下载任务 | 磁力链接或种子文件路径 |
aria2.addMetalink | 添加 Metalink 下载任务 | Metalink 文件的 URL 或者 Metalink 文件内容 |
aria2.addTorrentMagnet | 添加 BitTorrent 磁力链接下载任务 | 磁力链接 |
aria2.remove | 移除下载任务 | 下载任务的 GID (任务标识符) |
aria2.forceRemove | 强制移除下载任务 | 下载任务的 GID (任务标识符) |
aria2.pause | 暂停下载任务 | 下载任务的 GID (任务标识符) |
aria2.pauseAll | 暂停所有下载任务 | 无 |
aria2.unpause | 恢复下载任务 | 下载任务的 GID (任务标识符) |
aria2.unpauseAll | 恢复所有下载任务 | 无 |
aria2.forcePause | 强制暂停下载任务 | 下载任务的 GID (任务标识符) |
aria2.forcePauseAll | 强制暂停所有下载任务 | 无 |
aria2.getUris | 获取下载任务的 URI 列表 | 下载任务的 GID (任务标识符) |
aria2.getFiles | 获取下载任务的文件列表 | 下载任务的 GID (任务标识符) |
aria2.getPeers | 获取下载任务的 Peer 列表 | 下载任务的 GID (任务标识符) |
aria2.getServers | 获取下载任务的服务器信息列表 | 下载任务的 GID (任务标识符) |
aria2.tellStatus | 获取下载任务状态 | 下载任务的 GID (任务标识符) |
aria2.getOption | 获取下载任务的选项信息 | 下载任务的 GID (任务标识符) |
aria2.getGlobalOption | 获取全局选项信息 | 无 |
aria2.changeOption | 修改下载任务的选项 | 下载任务的 GID (任务标识符),新选项值 |
aria2.changeGlobalOption | 修改全局选项 | 新选项值 |
aria2.getGlobalStat | 获取全局状态 | 无 |
aria2.purgeDownloadResult | 清除已完成/失败的下载任务信息 | 无 |
aria2.removeDownloadResult | 移除已完成/失败的下载任务信息 | 下载任务的 GID (任务标识符) |
aria2.getVersion | 获取 Aria2 版本信息 | 无 |
aria2.getSessionInfo | 获取 Aria2 会话信息 | 无 |
aria2.shutdown | 关闭 Aria2 | 无 |
aria2.forceShutdown | 强制关闭 Aria2 | 无 |
aria2.saveSession | 保存 Aria2 会话信息 | 无 |
aria2.multicall | 批量调用多个方法 | 方法调用数组 |