Node.js를 사용한 HTTP 요청 실행 후 삭제
7068 단어 networkquirrelwebdevjavascript
어떻게 작동합니까?
HTTP 요청은 TCP 연결을 기반으로 합니다. curl google.com
를 실행하면 google.com:80
에 대한 TCP 연결이 열리고 대략 다음과 같이 전송됩니다.
GET / HTTP/1.1
Host: google.com
User-Agent: curl/7.64.1
Accept: */*
선
의미
1
요청 라인. 메서드, 위치 및 프로토콜 버전 포함
2
유일한 필수 헤더: "호스트"
3, 4
일부 헤더
5
헤더와 본문을 구분하는 빈 줄
일반적으로 서버가 다음과 같이 응답할 때까지 기다립니다.
HTTP/1.1 200
Content-Type: text/html
<html><head> ...
그러나 응답은 우리에게 관심이 없습니다. 요청을 보낸 다음 TCP 연결을 종료하고 더 흥미로운 작업을 계속합니다.
대략적인 테스트 구현
가장 먼저 필요한 것은 호출할 수 있는 테스트 서버입니다.
const http = require("http");
http
.createServer((req, res) => {
req.on("end", () => {
setTimeout(
() => {
console.log("Done");
res.statusCode = 200;
res.end("Done");
},
1000
);
});
})
.listen(5000);
시간이 많이 걸리는 작업을 시뮬레이트하기 위해 이 서버는 응답을 1초 지연시킵니다.
이제 흥미로운 부분인 수동 HTTP 요청 만들기입니다.
const net = require("net");
const client = new net.Socket();
client.connect(5000, "localhost", () => {
// request line
client.write("POST / HTTP/1.1\r\n");
// headers
client.write("Host: localhost:5000\r\n");
client.write(`Content-Length: 11\r\n`);
// blank line
client.write("\r\n");
// body
client.write("Hello World");
// end the connection prematurely
client.destroy();
});
client.on("close", () => {
console.log("Connection Closed");
});
오히려 간단합니다! localhost:5000
에 대한 연결을 열고 요청을 발송합니다. 중요한 줄은 client.destroy()
에 대한 호출로, 요청이 전송된 직후 소켓을 종료합니다.
실제로 살펴보겠습니다.
결론
Fire-and-forget HTTP 호출은 그렇게 어렵지 않습니다. 대역폭이 제한된 환경에서 사용할 수 있습니다. 아마도 Quirrel 에 사용할 것입니다.
이 게시물이 유용하거나 흥미로웠다면 댓글을 남기거나 Twitter에 메시지를 남겨주세요! 나는 항상 다른 사람들을 돕는 내 콘텐츠에 대해 듣는 것을 좋아합니다.
Reference
이 문제에 관하여(Node.js를 사용한 HTTP 요청 실행 후 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/skn0tt/fire-and-forget-http-requests-using-node-js-l1p
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
GET / HTTP/1.1
Host: google.com
User-Agent: curl/7.64.1
Accept: */*
HTTP/1.1 200
Content-Type: text/html
<html><head> ...
가장 먼저 필요한 것은 호출할 수 있는 테스트 서버입니다.
const http = require("http");
http
.createServer((req, res) => {
req.on("end", () => {
setTimeout(
() => {
console.log("Done");
res.statusCode = 200;
res.end("Done");
},
1000
);
});
})
.listen(5000);
시간이 많이 걸리는 작업을 시뮬레이트하기 위해 이 서버는 응답을 1초 지연시킵니다.
이제 흥미로운 부분인 수동 HTTP 요청 만들기입니다.
const net = require("net");
const client = new net.Socket();
client.connect(5000, "localhost", () => {
// request line
client.write("POST / HTTP/1.1\r\n");
// headers
client.write("Host: localhost:5000\r\n");
client.write(`Content-Length: 11\r\n`);
// blank line
client.write("\r\n");
// body
client.write("Hello World");
// end the connection prematurely
client.destroy();
});
client.on("close", () => {
console.log("Connection Closed");
});
오히려 간단합니다!
localhost:5000
에 대한 연결을 열고 요청을 발송합니다. 중요한 줄은 client.destroy()
에 대한 호출로, 요청이 전송된 직후 소켓을 종료합니다.실제로 살펴보겠습니다.
결론
Fire-and-forget HTTP 호출은 그렇게 어렵지 않습니다. 대역폭이 제한된 환경에서 사용할 수 있습니다. 아마도 Quirrel 에 사용할 것입니다.
이 게시물이 유용하거나 흥미로웠다면 댓글을 남기거나 Twitter에 메시지를 남겨주세요! 나는 항상 다른 사람들을 돕는 내 콘텐츠에 대해 듣는 것을 좋아합니다.
Reference
이 문제에 관하여(Node.js를 사용한 HTTP 요청 실행 후 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/skn0tt/fire-and-forget-http-requests-using-node-js-l1p
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Node.js를 사용한 HTTP 요청 실행 후 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/skn0tt/fire-and-forget-http-requests-using-node-js-l1p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)