더 간단한 방법이 있습니다.
setTimeout을 사용하거나 소켓으로 직접 작업하는 대신
클라이언트 사용의 'options'에서 'timeout'을 사용할 수 있습니다.
아래는 서버와 클라이언트의 코드입니다.
모듈 및 옵션 부분 :
'use strict';
const assert = require('assert');
const http = require('http');
const options = {
host: '127.0.0.1',
port: 3000,
method: 'GET',
path: '/',
timeout: 2000
};
서버 부분 :
function startServer() {
console.log('startServer');
const server = http.createServer();
server
.listen(options.port, options.host, function () {
console.log('Server listening on http://' + options.host + ':' + options.port);
console.log('');
startClient();
});
}
클라이언트 부분 :
function startClient() {
console.log('startClient');
const req = http.request(options);
req.on('close', function () {
console.log("got closed!");
});
req.on('timeout', function () {
console.log("timeout! " + (options.timeout / 1000) + " seconds expired");
req.destroy();
});
req.on('error', function (e) {
if (req.connection.destroyed) {
console.log("got error, req.destroy() was called!");
return;
}
console.log("got error! ", e);
});
req.end();
}
startServer();
위의 세 부분을 모두 "a.js"파일에 넣고 다음을 실행하면 :
node a.js
그러면 출력은 다음과 같습니다.
startServer
Server listening on http:
startClient
timeout! 2 seconds expired
got closed!
got error, req.destroy() was called!
도움이되기를 바랍니다.