์๋ ํ์ธ์,
์ฌํํ๊ธฐ ๋งค์ฐ ์ฝ๊ณ ํญ์ ๋ฐ์ํฉ๋๋ค!
const request = require('request');
const axios = require('axios');
const url = 'http://www.bestbuy.com/';
request({
url: url,
timeout: 5000
}, (error, response, body) => {
if (!error)
console.log(`request got ${response.statusCode}`);
else
console.error(`request got an error`, error);
});
axios.get(url).then((ret) => {
console.log(`Axios got ${ret.status}`);
});
์ถ๋ ฅ:
Axios got 200
request got an error { Error: ESOCKETTIMEDOUT
at ClientRequest.<anonymous> (/Users/amir/dev/test/testVideosFb/node_modules/request/request.js:819:19)
at Object.onceWrapper (events.js:293:19)
at emitNone (events.js:86:13)
at ClientRequest.emit (events.js:188:7)
at Socket.emitTimeout (_http_client.js:679:10)
at Object.onceWrapper (events.js:293:19)
at emitNone (events.js:86:13)
at Socket.emit (events.js:188:7)
at Socket._onTimeout (net.js:345:8)
at ontimeout (timers.js:380:14) code: 'ESOCKETTIMEDOUT', connect: false }
๋ด ํ๊ฒฝ์ ๋ ธ๋ 7.7.2/8.3.0 ๋ฐ [email protected]์ ๋๋ค.
์ด ESOCKETTIMEOUT ๋ฌธ์ ์ ๋ํ ํผ๋๋ฐฑ์ ๋ฐ๋ ๊ฒ๋ ์ข์ ๊ฒ์ ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ์ ๋ ์ป์๊ณ ์ด ๋ชจ๋์ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
ESOCKETTIMEOUT์ด ์์ผ ํ๋ง ๋ฌธ์ ์ ๊ด๋ จ์ด ์์ต๋๊น? ๋๋ ๊ทธ๋ ๊ฒ ์๊ฐํ์ฌ ๋ ธ๋์์ ์์ผ ํ๋ง์ ๋นํ์ฑํํ์ต๋๋ค.
`var http = require('http');
http.globalAgent.maxSockets = ๋ฌดํ๋;
var https = ์๊ตฌ('https');
https.globalAgent.maxSockets = ๋ฌดํ๋;`
๊ทธ๋ฌ๋ ์ด ์ค๋ฅ์ ๋ํ ํด๊ฒฐ์ฑ ์ผ๋ก ๋๊ตฐ๊ฐ ESOCKETTIMEOUT์ ๊ฐ์ ธ์ค์ง ์๋ ๊ฒ์ ๋ํด ์๋ฌด ๊ฒ๋ ๋ณ๊ฒฝ๋์ง ์์์ต๋๊น?
๋์ ๊ฐ์ ๋ฌธ์
๋น๋๊ธฐ ์์ฒญ์ด ๋๋ฌด ๋ง์ผ๋ฉด Linux์์ ESOCKETTIMEDOUT ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ด๊ฐ ์ฐพ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด ์ต์ ์ request()๋ก ์ค์ :
agent: false, pool: {maxSockets: 100}
๊ทธ ํ์๋ ์๊ฐ ์ด๊ณผ๊ฐ ๊ฑฐ์ง์ผ ์ ์์ผ๋ฏ๋ก ์ด๋ฅผ ๋๋ ค์ผ ํ ์๋ ์์ต๋๋ค.
์ฌ๊ธฐ์ ๊ฐ์ ๋ฌธ์ +1
agent: false, pool: {maxSockets: 100}
๋์์ด ๋์ง ์์์ต๋๋ค
์์ฒญ์์ ์ ์ก๋๋ ๊ธฐ๋ณธ ํค๋๋ก ์ธํด bestbuy.com์ด ์์ฒญ์ ์ฐจ๋จํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. axios ์์ฒญ์ด ๋ณด๋ด๋ ๊ฒ๊ณผ ๋์ผํ ํค๋๋ก ์์ฒญ์ด ์ด๋ฃจ์ด์ง ๊ฒฝ์ฐ ์๊ฐ ์ด๊ณผ๋์ง ์์ต๋๋ค.
const request = require('request');
const axios = require('axios');
const url = 'http://www.bestbuy.com/';
request({
url: url,
timeout: 5000,
headers: {
"Accept": "application/json, text/plain, */*",
"User-Agent": "axios/0.18.0"
}
}, (error, response, body) => {
if (!error)
console.log(`request got ${response.statusCode}`);
else
console.error(`request got an error`, error);
});
axios.get(url).then((ret) => {
console.log(`Axios got ${ret.status}`);
});
์ด ๋ฌธ์ ๋ ์ต๊ทผ ํ๋์ด ์์๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก ์ค๋๋ ๊ฒ์ผ๋ก ํ์๋์์ต๋๋ค. ๋ ์ด์ ํ๋์ด ์์ผ๋ฉด ํ์๋ฉ๋๋ค. ๊ทํ์ ๊ธฐ์ฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์์ฒญ์์ ์ ์ก๋๋ ๊ธฐ๋ณธ ํค๋๋ก ์ธํด bestbuy.com์ด ์์ฒญ์ ์ฐจ๋จํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. axios ์์ฒญ์ด ๋ณด๋ด๋ ๊ฒ๊ณผ ๋์ผํ ํค๋๋ก ์์ฒญ์ด ์ด๋ฃจ์ด์ง ๊ฒฝ์ฐ ์๊ฐ ์ด๊ณผ๋์ง ์์ต๋๋ค.