Node.js POST请求发送两次,两次之间有一定的延迟,发送到Express route

Node.js POST请求发送两次,两次之间有一定的延迟,发送到Express route,node.js,http,express,Node.js,Http,Express,我有一条快速路线/chat/send,用于发送消息,它从会话和消息中获取用户ID。它工作正常,但我注意到请求在一段时间后再次发送,没有任何操作(我在后台做了一些事情,再次检查了控制台)。我尝试重新启动服务器并再次检查,但问题仍然存在 这是路线: app.post('/chat/send', ensureAuthenticated, (req, res) => { let id = req.user.id; let message = req.body.message;

我有一条快速路线
/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键

终端截图:


可以重试帖子;因为您根本没有回复请求,所以不会向浏览器发送任何响应,并且它假定请求失败。然后,它应该重试该请求,这就是这里发生的情况

要修复此问题,只需使用Express处理程序中的任何内容进行回复,即使只需调用
res.end()

参考: