0

Express、React、Ajax、Plivo を使用しています。

クライアントからExpressサーバーにデータ(ユーザーの電話番号とテキストメッセージ)を送信するajax POSTリクエストがあります。投稿リクエストを送信すると、携帯電話にテキスト メッセージが表示されますが、chrome dev ツールを確認すると、リクエスト ステータスが保留中であることがわかります (サーバーでは 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 リクエストを行った直後に SMS を受信することに気付きましたが、2 回送信された場合、リクエストは 4 分間保留されたままになります。つまり、リクエストが 2 分を過ぎるとテキスト メッセージが再度表示され、リクエストは 3.9 分で失敗します。SMS を 1 回受信すると、リクエストは 2 分で失敗します。したがって、2分ごとに取得POST / - - ms - -します。これは、サーバーがリクエストの完了の試行を停止し、完了を再試行してSMSを再度送信することを意味すると推測しています。ここに画像の説明を入力

上の画像では、2 つの POST リクエスト、2 つの異なるテキスト メッセージを送信しています。最初は失敗するのに約 4 分かかりました。その 1 つで、同じ SMS が 2 回届きました。2番目のものでは、失敗するのに2分かかりました.1回だけSMSを受け取りました。

私は他の回答を見てきましたが、多くの人にとってファビコンのためにリクエストが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()は、コールバックに少なくとも a を追加します。p.send_message()200 OK

于 2016-03-19T22:02:11.757 に答える