nodejs JSON - RPC 를 통 해 aria 2 인 터 페 이 스 를 호출 합 니 다.
9978 단어 nodejs
오늘 은 이전 다운로드 서버 개발 을 계속 합 니 다. 첫 번 째 단 계 는 파일 을 호출 하 는 API 입 니 다. 두 번 째 단 계 는 응용 디 렉 터 리 에 있 는 모든 파일 을 표시 하 는 것 입 니 다. 오늘 의 목 표 는 배경 인 터 페 이 스 를 호출 하여 다운로드 하 는 것 입 니 다.
1. aria 2 설정
여기 서 우리 가 사용 하 는 것 은 aria 2 이 고 aria 2 는 명령 행 에서 실행 되 고 다 중 프로 토 콜, 다 중 소스 다운로드 도구 입 니 다.wget 처럼 파일 을 직접 다운로드 할 수 있 는 것 을 제외 하고 가장 중요 한 기능 은 배경 서 비 스 를 사용 할 수 있 으 며, 시작 후 rpc 인터페이스 에서 작업 을 추가 할 때 까지 기다 리 는 것 입 니 다.
소형 다운로드 서버 를 구축 하 는 글 에서 시작 하 는 방식 은 다음 과 같다.
aria2c --enable-rpc --rpc-listen-all &
명령 으로 설정 을 수정 하고 저장 하기 가 불편 합 니 다. 설정 파일 $HOME /. aria 2 / aria2. conf 를 사용 하여 시작 하 는 것 을 추천 합 니 다.
aria2c --conf-path=/home/pi/.aria2/aria2.conf &
1) 우선 aria2. conf 파일 을 만 듭 니 다.
vi ~/.aria2/aria2.conf
2) 입력 내용:
# rpc
enable-rpc=true
#
rpc-listen-all=true
#RPC ,
rpc-listen-port=6800
# ( ), : 3
max-concurrent-downloads=10
#
continue=true
#
max-connection-per-server=10
# , ,
min-split-size=10M
# , : 5
split=10
#
max-overall-download-limit=0
#
max-download-limit=0
#
max-overall-upload-limit=0
#
max-upload-limit=0
# ,
dir=/home/pi/Downloads
3) 시스템 시작 스 크 립 트 추가 (raspberrypi 시스템 은 아직 연구 가 필요 합 니 다)
2. nodejs 코드 작성
1) aria 2 JSON - RPC 인터페이스 및 nodejs 모듈
JSON - RPC 인터페이스 websocket
2) 패키지 웹 소켓 클 라 이언 트
var WebSocketClient = require('websocket').client,
client = new WebSocketClient(),
conn,
cb,
cbmap = {};
client.on('connect', function(connection) {
console.log('INFO: WebSocket client connected to Aria2.');
connection.on('error', function(error) {
console.error("ERROR: Connection Error: " + error.toString());
});
connection.on('close', function() {
console.log('INFO: Connection Closed');
});
connection.on('message', function(message) {
if (message.type === 'utf8') {
var data = JSON.parse(message.utf8Data);
if (typeof cbmap[data.id] === 'function') {
var result = {
obj: data,
err: data.error ? new Error(data.error.message) : false
};
cbmap[data.id](result);
}
delete cbmap[data.id];
}
});
conn = connection;
if (typeof cb === 'function') {
cb();
}
});
client.on('connectFailed', function(error) {
console.error('ERROR: Client Error: ' + error.toString());
});
function connect(callback) {
cb = callback;
client.connect('ws://localhost:6800/jsonrpc');
}
function uuid() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random() * 16 | 0, v = (c === 'x') ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
function send(command, callback) {
var id = uuid();
if (typeof callback === 'function') {
cbmap[id] = callback;
}
command.jsonrpc = '2.0';
command.id = id;
conn.sendUTF(JSON.stringify(command));
}
exports.connect = connect;
exports.send = send;
3) 웹 소켓 을 호출 하여 다운로드 시작:
var websocket = require('./websocket');
websocket.connect(function() {
websocket.send({
method : 'aria2.addUri',
params : [['http://wenzhixin.net.cn/images/header_bg.jpg']]
}, function(result) {
console.log(result);
});
});
여기까지 / home / pi / Downloads 를 보면 header 를 성공 적 으로 다운로드 한 것 을 볼 수 있 습 니 다.bg. jpg 파일 은 배경 에 있 는 aria 2 인 터 페 이 스 를 호출 하여 다운로드 주 소 를 추가 하고 우리 가 원 하 는 것 을 다운로드 할 수 있 습 니 다.
다음으로 전송: http://wenzhixin.net.cn/2013/10/27/nodejs_json_rpc_aria2
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Node.js를 AWS서버에서 사용하는 실습간단한 예제와 함께 AWS에서 Node.js를사용하는 법을 배워보도록 하겠다. 해당 github에 있는 레포지토리로 사용을 할 것이다. 3000번 포트로 Listen되는 예제이고 간단히 GET, POST, DELET...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.