Node.js 上传图像时请求超时
我使用golang为web服务器和前端开发web应用程序,并使用reactJS和nodeJS为前端服务。我在上传大图像时遇到两个问题Node.js 上传图像时请求超时,node.js,ajax,go,timeout,fetch,Node.js,Ajax,Go,Timeout,Fetch,我使用golang为web服务器和前端开发web应用程序,并使用reactJS和nodeJS为前端服务。我在上传大图像时遇到两个问题(目前正在测试2.9 mb)第一个问题是在10秒内超时,在浏览器端说请求超时,但上传成功上传到数据库。第二个问题是请求被复制了两次,因此请求被保存到数据库中两次。我已经搜索了堆栈溢出,但它似乎不起作用 第一选择 下面是使用ajax调用的代码,即从同构获取获取 下面建议在以下位置实现超时包装器 请求超时仍在10秒内发生 第二种选择 我为ajax调用尝试了不同的节点模块
(目前正在测试2.9 mb)
第一个问题是在10秒内超时,在浏览器端说请求超时,但上传成功上传到数据库。第二个问题是请求被复制了两次,因此请求被保存到数据库中两次。我已经搜索了堆栈溢出,但它似乎不起作用
第一选择
下面是使用ajax调用的代码,即从同构获取获取
下面建议在以下位置实现超时包装器
请求超时仍在10秒内发生
第二种选择
我为ajax调用尝试了不同的节点模块,即axios,因为它有一个超时选项,但这也没有解决超时问题
第三种选择
我尝试在服务器端设置读取超时和写入超时,类似于
在10秒内,我再次在浏览器端收到请求超时
如果我犯了错误,我应该怎么做来纠正或指出我?您可以单独测试服务器端点以进行文件上载,例如使用
curl
cmd吗?似乎超时发生在JS应用程序端。我已经使用curl进行了测试<代码>curl-F“eventTitle=美食节”-F“price=15”-F“quantity=100”-F“startDate=2017-06-22 3:04 PM”-F“endDate=2017-06-22 3:04 PM”-F“eventImage=@/Downloads/20160825_151253.jpg”本地主机:9292/event在终端获得请求超时@已尝试使用--max time标志<代码>卷曲-最长时间120-F“eventTitle=美食节”-F“价格=15”-F“数量=100”-F“开始日期=2017-06-22 3:04下午”-F“结束日期=2017-06-22 3:04下午”-F“eventImage=@/Downloads/20160825_151253.jpg”本地主机:9292/event。仍然会引发请求超时。谢谢,您可以注册http.Server.ConnState
func吗?观察连接状态的变化发生在服务器实例上。此路径是否正确@/Downloads/20160825_151253.jpg
?,通常下载目录位于用户主页内。我已实现http.Server.ConnState func。Following获得以下输出<代码>连接状态:新建,&{0xc4202e8150}连接状态:活动,&{0xc4202e8150}映像GUID UUID 99600a33-b2cf-47b2-b2bc-58c0c4dfd18a连接状态:空闲,&{0xc4202e8150}连接状态:关闭,&{0xc4202e8150}@jeevatkm
static addEvent(events){
let config = {
method: 'POST',
body: events
};
function timeout(ms, promise) {
return new Promise(function(resolve, reject) {
setTimeout(function() {
reject(new Error("timeout"))
}, ms)
promise.then(resolve, reject)
})
}
return timeout(120000,fetch(`${SERVER_HOSTNAME}:${SERVER_PORT}/event`, config))
.then(function(response){
if(response.status >= 400){
return {
"error":"Bad Response from Server"
};
}else if(response.ok){
browserHistory.push({
pathname: '/events'
});
}
});
}
server := &http.Server{
Addr: ":9292",
Handler: router,
ReadTimeout: 180 * time.Second,
WriteTimeout: 180 * time.Second,
}