上传图片时请求超时

时间:2017-06-22 07:01:08

标签: node.js ajax go timeout fetch

正在使用 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秒内在浏览器端获取请求超时。

如果我犯了错误,我该怎么做才能解决或指出我?

0 个答案:

没有答案