naria2 (WIP)
High-level aria2 abstraction library for Node.
Usage
Browser
npm i naria2
Using WebSocket:
import { createClient } from 'naria2'
const client = await createClient(
new WebSocket('ws://localhost:6800/jsonrpc')
)
Using HTTP:
import { createClient } from 'naria2'
import { createHTTP } from 'naria2/transport'
const client = await createClient(
createHTTP('http://localhost:6800/jsonrpc')
)
Node.js standalone
If you want to use naria2 in the Node.js standalone, you can install @naria2/node
. It has included a prebuilt aria2 binary according to your architecture, so that there is no need to install a aria2 on your own.
npm i naria2 @naria2/node
You can use the createChildProcess
API to spawn an aria2 child process, and connect to it in WebScoket under the hood.
import { createClient } from 'naria2'
import { createChildProcess } from '@naria2/node'
const client = await createClient(createChildProcess())
Warning
You should close the client on your own, otherwise the aria2 process may not be killed even if your program finished or crashed.
See my blog post (in Chinese) or The Death of a Node.js Process (in English) on how to handle the exit of a Node.js process.
Credits
- aria2: A lightweight multi-protocol & multi-source, cross platform download utility operated in command-line
- @hydrati made maria2
- Motrix: Build aria2 binaries for different platforms
License
MIT License © 2023 XLor