Node.js를 사용하여 서버에서 클라이언트로 데이터를 스트리밍하는 방법은 무엇입니까?
8058 단어 node
데이터를 작은 청크로 전송하는 것이 서버에서 클라이언트로 파일을 전송하는 가장 좋은 방법입니다. 전체 데이터가 한 번에 메모리에 로드되지 않기 때문에 많은 메모리를 절약하고 인터넷을 통해 매우 쉽게 전송할 수 있습니다.
예를 들어 비디오에 대한 끝점이 있고 비디오 데이터를 스트리밍하려고 한다고 가정해 보겠습니다.
이 문제를 해결하기 위해 Node.js의 Streams를 사용할 수 있습니다.
간단하게 Express.js를 사용하여 엔드포인트를 빌드해 보겠습니다.
// endpoint for /video
app.get("/video", (req, res) => {
// code goes here
});
이제 필요한 비디오 파일이
videos
이라는 디렉토리에 있고 비디오 파일의 이름이 hello.mp4
이라고 가정합니다. 비디오를 스트리밍하려면 다음과 같이 비디오 파일의 읽기 스트림을 만들 수 있습니다.// get the filesystem module
const fs = require("fs");
// endpoint for /video
app.get("/video", (req, res) => {
// create a read stream for the video hello.mp4
const rs = fs.createReadStream("./videos/hello.mp4");
});
읽기 스트림을 생성한 후 스트리밍 중인 비디오에 대한 일부 정보를 클라이언트에 알리기 위해 일부 헤더를 설정해야 합니다.
기본 정보에는 파일 크기와 파일 형식이 포함됩니다. 이러한 정보는 다음과 같이 응답의 헤더에 설정됩니다.
// get the filesystem module
const fs = require("fs");
// endpoint for /video
app.get("/video", (req, res) => {
// create a read stream for the video hello.mp4
const rs = fs.createReadStream("./videos/hello.mp4");
// get size of the video file
const { size } = fs.statSync("./videos/hello.mp4");
// set header
// including size of file and type of file
res.setHeader("Content-Type", "video/mp4");
re.setHeader("Content-Length", size);
});
여기에서 콘텐츠 유형을
video/mp4
으로 설정하고 속성 size
을 사용하여 파일 크기를 설정합니다.이제 응답 헤더를 설정한 후
pipe()
개체 ReadableStream
에서 사용할 수 있는 rs
메서드를 사용하여 비디오 스트리밍을 시작할 수 있습니다.// get the filesystem module
const fs = require("fs");
// endpoint for /video
app.get("/video", (req, res) => {
// create a read stream for the video hello.mp4
const rs = fs.createReadStream("./videos/hello.mp4");
// get size of the video file
const { size } = fs.statSync("./videos/hello.mp4");
// set header
// including size of file and type of file
res.setHeader("Content-Type", "video/mp4");
res.setHeader("Content-Length", size);
// start streaming the video
// using the pipe() method
rs.pipe(res);
});
이제 서버를 시작하고 브라우저에서 위 끝점으로 이동하면 비디오가 브라우저에서 스트리밍을 시작하는 것을 볼 수 있습니다.
응답 😃 유용하셨다면 공유해 주세요.
Reference
이 문제에 관하여(Node.js를 사용하여 서버에서 클라이언트로 데이터를 스트리밍하는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/melvin2016/how-to-stream-data-from-server-to-client-using-node-js-4mk4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)