gpt4 book ai didi

javascript - IncomingMessage 中止事件

转载 作者:数据小太阳 更新时间:2023-10-29 05:32:49 27 4
gpt4 key购买 nike

我在 Node (4.2.3) 中有这个基本的 express (4.13.3) 服务器。

//blah blah initialization code

app.put('/', function(req, res) {

req.on('close', function() {
console.log('closed');
});

req.on('end', function() {
console.log('ended');
});

req.on('error', function(err) {
console.log(err);
});

res.send(200);
});

然后我像这样使用 cURL 模拟文件上传:

curl http://localhost:3000/ -X PUT -T file.zip

它开始上传(虽然没有任何反应),当它结束时,事件 end 触发。

当我使用 Ctrl+C 中止上传时,问题就出现了。根本没有事件触发。没有任何反应。

req对象继承自IncomingMessage,从而继承自ReadableStreamEventEmitter.

是否有任何事件可以捕捉到这样的中止?有什么方法可以知道客户端是否中止文件上传?

第一次编辑:

用户@AwalGarg 提出了req.socket.on('close', function(had_error) {}) 但我想知道是否有任何不使用套接字的解决方案?

最佳答案

您的代码设置一些事件监听器,然后立即将响应发送回客户端,从而提前完成 HTTP 请求。

在事件处理程序中移动 res.send(),保持连接打开,直到其中一个事件发生。

app.put('/', function(req, res) {

req.on('close', function() {
console.log('closed');
res.send(200);
});

req.on('end', function() {
console.log('ended');
res.send(200);
});

req.on('error', function(err) {
console.log(err);
res.send(200);
});

});

关于javascript - IncomingMessage 中止事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34180303/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com