📜  Node.js http.ServerResponse.socket API(1)

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

Node.js http.ServerResponse.socket API介绍

在Node.js中,http.ServerResponse类实现了Node.js的HTTP服务器响应。每当服务器要向客户端发送数据时,它会创建一个http.ServerResponse实例。

http.ServerResponse.socket属性是Node.js http模块中http.ServerResponse类的成员,它是指该响应使用的底层套接字。socket属性包含用于读取客户端请求数据和向客户端写入响应数据的方法。

方法

以下是http.ServerResponse.socket提供的可用方法:

socket.setTimeout([msecs][, callback])

设置套接字超时的毫秒数。如果在指定的时间内没有数据接收到,则套接字会自动断开。callback回调函数将在套接字被断开之前被调用。

response.socket.setTimeout(3000, () => {
    console.log('socket timeout');
    response.socket.destroy();
})
socket.setNoDelay([noDelay])

启用或禁用Nagle算法。如果noDelay设置为true,数据将立即被写入套接字,而不会被缓冲。

response.socket.setNoDelay(true);
socket.setKeepAlive([enable][, initialDelay])

启用或禁用Keep-Alive功能。如果enable为true,则收到连接之后,连接将保持打开状态而不关闭,直到达到超时时间。

response.socket.setKeepAlive(true, 10000);
属性

以下是http.ServerResponse.socket提供的可用属性:

socket.remoteAddress

获取客户端的IP地址。

socket.remoteFamily

获取客户端的协议族,可以是IPv4或IPv6。

socket.remotePort

获取客户端的端口号。

示例

以下是使用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。