POST请求被发送两次,它们之间有一定的延迟到Express路由

时间:2018-01-01 21:56:26

标签: node.js http express

我有一条Express路由/chat/send,用于发送从会话和消息中获取用户ID的消息。它工作正常,但我注意到请求在一段时间后再次发送,没有任何操作(我在后台做了一些事情并再次检查了控制台)。我试图重新启动服务器并再次检查并且问题仍然存在。

这是路线:

app.post('/chat/send', ensureAuthenticated, (req, res) => {
    let id = req.user.id;
    let message = req.body.message;
    let currentTime = new Date().getTime();

    if (message.trim() !== "") {
        console.log('ID: ' + id + ' Message: ' + message + ' Time: ' + currentTime);
    }
});

// here is the method for ensuring that authentication is done

let ensureAuthenticated = (req, res, next) => {
    if (req.isAuthenticated()) { return next(); }
    res.redirect('/');
}

这是客户端代码:

$("#send-message").on("click", function() {
    $.post('/chat/send', { message: $("#chat-message").val() });
    $("#chat-message").val("");
});

$("#chat-message").keypress( function(e) {
    if (e.which == 13) {
        $.post('/chat/send', { message: $("#chat-message").val() });
        $("#chat-message").val("");
        return false;
    }
});

正如我所说,当发生这种情况时,我不在同一个标​​签中,所以我很确定我没有点击按钮发送消息或按Enter键。

终端屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分:2)

可以重试POST;因为您根本没有回复请求,所以没有响应被传递给浏览器,并且它假定请求失败。 然后重试请求,这似乎是在这里发生的。

要修复,只需回复Express处理程序中的任何内容,即使您只是致电res.end()

参考:https://tools.ietf.org/html/rfc2616#section-8.2.4