当我在我的http服务器发送一个我在Node.js中写入的分块响应时,发生错误。此时无法向客户端发送错误消息,我认为this answer在这种情况下该怎么做是正确的:
您所能做的只是关闭连接。客户端没有收到所有标头,或者在响应结束时没有收到终止0长度的块。无论哪种方式都足以让客户端知道服务器在发送过程中遇到错误。
所以问题是,如何在我的http.ServerResponse对象上执行此操作?我无法调用end
,因为客户端会认为一切顺利,并且没有close
方法。有一个'close'
事件,但我觉得这是我应该在这种情况下听的东西,而不是让自己发泄,对吗?
答案 0 :(得分:0)
我是按照以下方式做的:
function respDestroy()
{
this._socket.destroy();
}
function respReply(message, close)
{
if (!close)
this.end(message);
else
this.end(message, function(){ this.destroy(); });
}
server.on('request',
function(req, resp)
{
resp._socket = resp.socket; // `socket` field is nulled after each `end()`
resp.destroy = respDestroy;
resp.reply = respReply;
...
});
您可以修改respReply
以接受状态代码和状态消息。