📌  相关文章
📜  Node.js Http2ServerResponse.end() 方法(1)

📅  最后修改于: 2023-12-03 15:17:54.858000             🧑  作者: Mango

Node.js Http2ServerResponse.end() 方法

简介

Http2ServerResponse.end() 方法是 Node.js 中 Http2 模块提供的一个方法,用于结束 Http2 响应并向客户端发送数据。

该方法通常用于返回最终的响应结果,并通知客户端当前响应已经完成。一旦调用 response.end([data][, encoding][, callback]) 方法后,将不能再向客户端发送任何数据,否则会抛出 ERR_HTTP_HEADERS_SENT 异常。

语法
response.end([data][, encoding][, callback])
参数
  • data:可选参数,表示要向客户端发送的数据,可以为 StringBufferUint8Array 类型。
  • encoding:可选参数,当 data 是字符串类型时,指定字符串的编码格式,默认为 utf8
  • callback:可选参数,当客户端接收完响应时执行的回调函数,只会执行一次,且仅在第一次调用 response.end() 时才执行。
返回值

该方法没有返回值。

实例
const http2 = require('http2');
const fs = require('fs');

const options = {
  key: fs.readFileSync('server.key'),
  cert: fs.readFileSync('server.crt'),
};

const server = http2.createSecureServer(options);

server.on('error', (error) => {
  console.error(error);
});

server.on('stream', (stream, headers) => {
  stream.end('Hello World!');
});

server.listen(9000);

以上代码演示了如何使用 Http2ServerResponse.end() 方法向客户端发送 Hello World! 的字符串。

注意事项
  1. 该方法只能在 Http2 请求的 stream 事件中使用。
  2. 如果在调用 response.end() 后仍然向客户端发送数据,将会抛出 ERR_HTTP_HEADERS_SENT 异常。
  3. 在使用 response.end() 方法时,如果同时指定了 datacallback 参数,则必须先发送数据再调用回调函数,否则回调函数将不会执行。