node服务器响应超时,nodejs 如何设置http 请求的超时时间

场景: 我需要在nodejs中调用一个处理时间较长的接口吗,可能会超过120s。

nodejs 默认的 http 请求超时时间超过120s,则会返回超时。

问题:

如何修改默认的超时时间呢?

最好是针对某个请求修改,不要影响到其他请求。

Koa示例:

router.get('/list', async (ctx) => {

// 设置处理过程超过120s

let data = await timeoutService(121000)

ctx.status = 200;

ctx.body = {

success: true,

data: data

};

});

使用nodejs调用

// nodejs 调用

const GetList = (data) => {

return new Promise((resolve, reject) => {

let bs = JSON.stringify(data)

console.log(bs)

let encode = new Buffer(bs).toString('base64')

let postData = JSON.stringify({ data: encode})

var opt = {

method: 'GET',

host: 'localhost',

port: 3100,

path: '/list',

headers: {

'Content-Type': 'application/json',

'Content-Length': Buffer.byteLength(postData),

'Accept': 'application/json; charset=utf-8'

}

}

function getTimeLast(label, startTime) {

let finishTime = Date.now()

let last = (finishTime - startTime) / 1000

console.log(`${label} ${last}`)

}

let startTime = Date.now()

GetList({a: 1}).then(res => {

console.log(res)

getTimeLast('成功返回用时:', startTime)

}).catch(e => {

console.log(e)

getTimeLast('失败返回用时:', startTime)

})

结果返回如下:

{"a":1}

{ Error: socket hang up

at createHangUpError (_http_client.js:331:15)

at Socket.socketOnEnd (_http_client.js:423:23)

at emitNone (events.js:111:20)

at Socket.emit (events.js:208:7)

at endReadableNT (_stream_readable.js:1055:12)

at _combinedTickCallback (internal/process/next_tick.js:138:11)

at process._tickCallback (internal/process/next_tick.js:180:9) code: 'ECONNRESET' }

请求遇到问题:socket hang up

socket hang up

失败返回用时: 120.018

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值