📜  Node.js Http2ServerRequest.socket 方法(1)

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

Node.js Http2ServerRequest.socket 方法介绍

简介

Http2ServerRequest.socket 方法返回一个用于与客户端进行通信的 Socket 对象。这个 Socket 对象是一个可读可写的流。

语法
const socket = req.socket;
参数
  • req: Http2ServerRequest 对象,表示客户端发来的 HTTP 2 请求。
返回值

此方法返回一个 Socket 对象,代表与客户端建立的连接。

使用方法

下面的示例代码展示了如何使用 Http2ServerRequest.socket 方法获取与客户端的连接,并通过这个连接来发送响应。

const http2 = require('http2');

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

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

server.on('stream', (stream, headers) => {
  // 获取客户端的连接对象
  const socket = stream.session.socket;

  // 发送响应数据
  stream.respond({
    'content-type': 'text/html',
    ':status': 200
  });

  stream.end('<h1>Hello World!</h1>');

  // 监听连接断开事件
  socket.on('end', () => {
    console.log('Connection closed');
  });
});

server.listen(8443, () => {
  console.log('Server listening on https://localhost:8443/');
});
注意事项
  • Http2ServerRequest.socket 方法返回的 Socket 对象是一个可读可写的流,您可以通过这个流与客户端进行数据交换。
  • Socket 对象也是一个 EventEmitter,您可以监听它的各种事件来实现自己的逻辑。
  • 如果客户端在请求处理期间关闭了连接,那么通过 Http2ServerRequest.socket 方法获取的 Socket 对象也会被关闭,注意要处理连接关闭事件。