0

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

我有一个 ajax POST 请求,它将数据(用户电话号码和短信)从客户端发送到我的快速服务器。当我发送发布请求时,我在手机上收到了短信,但是当我检查 chrome 开发工具时,它告诉我请求状态处于挂起状态(在服务器中它记录为 status 202),一段时间后请求状态变为failedon铬开发工具。

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

    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 分钟才失败,我收到了一次短信。

我一直在寻找其他答案,对于很多人来说,由于网站图标,请求被发送了两次,但在我的情况下,我正在控制台记录 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
});

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

4

1 回答 1

2

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

于 2016-03-19T22:02:11.757 回答