Express + Plivo:Ajax POST 请求失败次数,但我仍然在 phone 上收到两次相同的短信

Express + Plivo: Ajax POST request fails times but I still get the same sms on my phone twice

我正在使用 Express、React、Ajax、Plivo。

我有一个 ajax POST 请求将数据(用户 phone 号码和短信)从客户端发送到我的快递服务器。当我发送 post 请求时,我在 phone 上收到短信,但是当我检查 chrome 开发工具时,它告诉我请求状态为待处理(在服务器中它记录为status 202),一段时间后请求状态在 chrome 开发工具上变为 failed

这是我在服务器日志中得到的:

    Status: 202
    API Response:
     { api_id: 'api-id-string',
      message: 'message(s) queued',
      message_uuid: [ 'random message_uuid string' ] }
    POST / - - ms - -

    Status: 202
    API Response:
     { api_id: 'api-id-string',
      message: 'message(s) queued',
      message_uuid: [ 'random message_uuid string' ] }
    POST / - - ms - -

我注意到我在发出 POST 请求后立即收到了短信,但如果发送了两次,该请求会等待 4 分钟。我的意思是,如果请求超过 2 分钟标记,我会再次收到短信,然后请求在 3.9 分钟内失败。如果我收到一次短信,则请求会在 2 分钟后失败。所以每 2 分钟我得到 POST / - - ms - -,我猜这意味着服务器停止尝试完成请求,因此它会重试完成它并再次发送短信。

在上图中,我提交了两个 POST 请求,两条不同的短信。首先,大约需要 4 分钟才能失败,对于那个,我收到了两次相同的短信。第二个花了2分钟才失败,我只收到了一次短信。

我一直在寻找其他答案,似乎对于很多人来说,由于 favicon,请求被发送了两次,但在我的情况下,我正在控制台记录 url 请求和 url 两者相同。它也没有发出另一个请求,它似乎正在重试发出请求所以这个问题不是重复的。

这是我服务器上的代码:

app.post('/', function(req, res) {
    console.log(req.url);
    p.send_message({
        src: plivoNumber,
        dst: '1'+req.body.number,
        text: req.body.message,
    }, function(status, response) {
        console.log('Status:', status);
        console.log('API Response:\n', response);
    });
});

这是 ajax POST 请求:

$.post('/', {
     number: this.state.number,
     message: this.state.message
});

我不是很有经验,所以我的调试技巧不是最好的,或者我只是犯了一个新手错误。

您没有响应客户端请求,因此 connections/requests 超时。如果您没有任何内容可发送回客户端(200 OK HTTP 状态代码除外),请在您的 p.send_message() 回调中至少添加一个 res.end()