POST请求在Chrome上“停止”

时间:2018-03-03 17:38:06

标签: angularjs google-chrome playframework

我开始注意到发送到我们的应用服务器的发布请求在浏览器端停止了大约7秒钟,没有明显的原因。

环境:

  • Angular 1.4
  • Play Framework
  • Chrome 64。*
  • 服务器发送事件(SSE)
  • POST请求

从Chrome控制台看到的TCP连接数在停止时大约为3-4,如网络中所示 - >连接ID

如果用户快速执行大约4个创建SSE订阅的UI操作,然后执行POST,则会始终观察到停止。

我不是真正的UI开发,所以任何帮助调试都会有所帮助。

3 个答案:

答案 0 :(得分:1)

我也看过这个,使用Angular 1.4和Chrome(不确定是哪个版本)。在我们的例子中,它似乎是由太多的并行请求引起的。因此,我们将请求分批捆绑。您可以使用此功能,如果您想要试一试,看看它是否对您的情况有所帮助:

function _batchRequests(requests, batchSize) {
    function doBatch(batches, batchIndex, numBatches, deferred) {
        if (batchIndex === numBatches) {
            deferred.resolve();
            return null;
        }
        console.log('Doing batch ' + batchIndex);
        let p = [];
        let batch = batches[batchIndex];
        _.forEach(batch, (f) => {
            p.push(f());
        });
        return $q.all(p).then(() => {
            doBatch(batches, ++batchIndex, numBatches, deferred);
        }, (err) => {
            deferred.reject(err);
        });
    }
    let deferred = $q.defer();
    let b = batchSize || 3;
    let batches = _.chunk(requests, b);
    doBatch(batches, 0, batches.length, deferred);
    return deferred.promise;
}

请注意,上述功能取决于_.chunk_.forEach的lodash。

答案 1 :(得分:1)

这与

非常相似

Chrome stalls when making multiple requests to same resource?

您可以尝试将帖子设为唯一,例如在查询中添加一些随机数,或尝试在播放端Array ( [0] => ! HF def2-TZVP opt numfreq [1] => % scf [2] => convergence tight [3] => end [4] => * xyz 0 1 [5] => C 0 0 0 [6] => O 0 0 1 [7] => * )

上为响应添加标题

答案 2 :(得分:0)

此问题在Chrome 66及更高版本中已解决。仔细阅读了许多发行文档,但无法查明是什么原因引起或解决了该问题。