요청 및 응답 스트림 - 관찰
8254 단어 streamswebdevhttpjavascript
먼저 소스코드
// The source: https://nodejs.org/api/stream.html#api-for-stream-consumers
const http = require('http');
const server = http.createServer(
function toUnderstandRequestAndResponseStreamRoleInDataFetching(req, res) {
let body = '';
let chunksReceived = 0;
req.setEncoding('utf8');
req.on('data', function saveChunkDataAndChunkCount(chunk) {
body += chunk;
chunksReceived += 1;
});
req.on('end', function sendReceivedChunkDataStatistic() {
try {
const chunkStatistic = JSON.stringify({
chunkCount: chunksReceived,
received: body,
});
res.writeHead(200, { 'Content-Type': 'application/json' });
res.write(chunkStatistic);
res.end();
} catch (error) {
// treat all errors as internal server error
res.statusCode = 500;
// let the user know what happened
return res.end(error.message);
}
});
}
);
const port = 3001;
server.listen(port);
청크 수집
리스너는 청크로 데이터를 수신합니다. 서버는 청크로 데이터를 받기 때문에 데이터가 분할됩니다.
req.on('data', function saveChunkDataAndChunkCount(chunk) {
body += chunk;
chunksReceived += 1;
});
각 청크는 얼마나 클 수 있습니까?
내가 포스트맨을 사용한 방법
우편 배달부를 열고 get 요청을 보내기 시작했습니다. 각 요청에 더 많은 문자를 추가했습니다. 각 청크와 증가된 청크 카운터를 인쇄했습니다. 청크 수를 늘리는 데 50kb 이상이 걸리는 것을 관찰했습니다. 더 많은 문자로 요청을 보내기 시작했습니다. 88개의 청크가 포함된 요청이 '잠시' 걸리는 것을 관찰했습니다.
const chunkStatistic = JSON.stringify({
chunkCount: chunksReceived,
received: body,
});
이전의 모든 관찰은 다음과 같은 결론을 도출합니다.
Request
및 Response
스트림입니다. Request
읽을 수 있는 스트림입니다. Response
쓰기 가능한 스트림입니다. 요청 및 응답 스트림에 대한 읽기 및 쓰기는 사용자에게 숨겨져 있습니다. 그러나 스트림에 데이터를 수동으로 가져오고 쓸 가능성이 있습니다. 읽기 및 쓰기의 수동 제어를 통해 가져오기 우선 순위를 제어할 수 있습니다.
참조
스트리밍 SSR에 대한 Dan Abramov의 문서 링크를 추가하고 싶었지만 찾을 수 없었습니다. 그래도 존재한다는 점에 주목하고 싶었습니다.
관련 읽기
Reference
이 문제에 관하여(요청 및 응답 스트림 - 관찰), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/srele96/request-and-response-stream-observations-37on텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)