📅  最后修改于: 2023-12-03 15:33:09.422000             🧑  作者: Mango
在Node.js中,http.ServerResponse类实现了Node.js的HTTP服务器响应。每当服务器要向客户端发送数据时,它会创建一个http.ServerResponse实例。
http.ServerResponse.socket属性是Node.js http模块中http.ServerResponse类的成员,它是指该响应使用的底层套接字。socket属性包含用于读取客户端请求数据和向客户端写入响应数据的方法。
以下是http.ServerResponse.socket提供的可用方法:
设置套接字超时的毫秒数。如果在指定的时间内没有数据接收到,则套接字会自动断开。callback回调函数将在套接字被断开之前被调用。
response.socket.setTimeout(3000, () => {
console.log('socket timeout');
response.socket.destroy();
})
启用或禁用Nagle算法。如果noDelay设置为true,数据将立即被写入套接字,而不会被缓冲。
response.socket.setNoDelay(true);
启用或禁用Keep-Alive功能。如果enable为true,则收到连接之后,连接将保持打开状态而不关闭,直到达到超时时间。
response.socket.setKeepAlive(true, 10000);
以下是http.ServerResponse.socket提供的可用属性:
获取客户端的IP地址。
获取客户端的协议族,可以是IPv4或IPv6。
获取客户端的端口号。
以下是使用http.ServerResponse.socket属性的一个示例:
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('Hello World!');
res.end();
console.log('Remote address:', res.socket.remoteAddress);
console.log('Remote port:', res.socket.remotePort);
console.log('Remote family:', res.socket.remoteFamily);
});
server.listen(3000, () => console.log('Server running on port 3000'));
运行该示例后,访问http://localhost:3000 ,将会在控制台输出以下信息:
Remote address: ::1
Remote port: 50968
Remote family: IPv6
这说明客户端的IP地址是::1,端口号是50968,协议族是IPv6。