node 정적 서버 인터럽트 리셋 실현
Range
메커니즘이 규정되어 있는데 우리는 이런 메커니즘을 통해 분할 전송을 할 수 있다.Range
서버 지원
Range
을 할 때 클라이언트는 보내야 할 내용을 여러 부분으로 나누어 서버에 보낼 수 있고 서버는 매번 일부 내용을 수신할 수 있다.이러한 능력이 생겨서 네트워크가 끊어지는 상황에 직면하면 우리는 클라이언트가 이미 전송한 파일 범위를 기록하고 네트워크가 복구된 후에 나머지 부분을 서버에 보낼 수 있다. 이렇게 하면 인터럽트 리셋을 실현할 수 있다.Range
의 http 1.1에 대한 구체적인 정의는 문서를 참고할 수 있다.구체적인 절차는 다음과 같다.
response.setHeader('Accept-Ranges', 'bytes');
서버는 브라우저의 요청에 응답하는 두 가지 상황으로 나뉩니다.
nodejs 간단한 실현
getStream(req, res, filepath, statObj) {
let start = 0;
let end = statObj.size - 1;
let range = req.headers['range'];
if (range) {
res.setHeader('Accept-Range', 'bytes');
res.statusCode = 206;
let result = range.match(/bytes=(\d*)-(\d*)/);
if (result) {
start = isNaN(result[1]) ? start : parseInt(result[1]);
end = isNaN(result[2]) ? end : parseInt(result[2]) - 1;
}
}
return fs.createReadStream(filepath, {
start, end
});
}
계속 기다리다
자기 소결
node 정적 서버를 구축하는 과정에서 Http1.1의
Range
를 이용하여 인터럽트 리셋 기능을 실현하는 것을 배운다참고 자료
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.