正在使用 golang 为Web服务器开发Web应用程序,并使用 reactJS 和 nodeJS 为前端提供服务。我有两个问题,上传大(currently am testing with 2.9 mb)
第一个的图像时,在10秒内显示超时,表示浏览器端请求超时但上传已成功上传到数据库。 第二个问题是请求被重复两次,因此请求被保存到数据库两次。我已经搜索了堆栈溢出但它似乎没有工作。
这是使用ajax调用的代码,即从isomorphic-fetch获取
建议在https://github.com/github/fetch/issues/175
实施超时包装器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'
});
}
});
}
请求超时仍然在 10秒内发生。
我为ajax调用尝试了一个不同的节点模块,即 axios ,因为它有一个超时选项,但这也没有解决超时问题。
我尝试在类似https://blog.cloudflare.com/the-complete-guide-to-golang-net-http-timeouts/
的服务器端设置读取超时和写入超时server := &http.Server{
Addr: ":9292",
Handler: router,
ReadTimeout: 180 * time.Second,
WriteTimeout: 180 * time.Second,
}
再次在 10秒内在浏览器端获取请求超时。
如果我犯了错误,我该怎么做才能解决或指出我?