सरल विधि है।
सेटटाइमआउट का उपयोग करने या सीधे सॉकेट के साथ काम करने के बजाय,
हम ग्राहक उपयोग में 'विकल्प' में 'टाइमआउट' का उपयोग कर सकते हैं
नीचे सर्वर और क्लाइंट दोनों का कोड है, 3 भागों में।
मॉड्यूल और विकल्प भाग:
'use strict';
// Source: https://github.com/nodejs/node/blob/master/test/parallel/test-http-client-timeout-option.js
const assert = require('assert');
const http = require('http');
const options = {
host: '127.0.0.1', // server uses this
port: 3000, // server uses this
method: 'GET', // client uses this
path: '/', // client uses this
timeout: 2000 // client uses this, timesout in 2 seconds if server does not respond in time
};
सर्वर भाग:
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('');
// server is listening now
// so, let's start the client
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");
// Source: https://github.com/nodejs/node/blob/master/test/parallel/test-http-client-timeout-option.js#L27
req.destroy();
});
req.on('error', function (e) {
// Source: https://github.com/nodejs/node/blob/master/lib/_http_outgoing.js#L248
if (req.connection.destroyed) {
console.log("got error, req.destroy() was called!");
return;
}
console.log("got error! ", e);
});
// Finish sending the request
req.end();
}
startServer();
यदि आप उपरोक्त सभी 3 भागों को एक फ़ाइल में रखते हैं, "a.js", और फिर चलाएँ:
node a.js
फिर, उत्पादन होगा:
startServer
Server listening on http://127.0.0.1:3000
startClient
timeout! 2 seconds expired
got closed!
got error, req.destroy() was called!
उम्मीद है की वो मदद करदे।