我尝试在 NodeJS 中测试 setKeepAlive() 的功能。我在同一本地网络的不同机器上运行 Server.js 和 client.js。然后,我关闭了客户端机器上的 wifi 连接(断开互联网连接)。15 分钟后,仍然没有消息抛出。这是为什么?没有 setKeepAlive() 工作吗?
这是服务器和客户端的代码:
客户端.js
var net = require('net');
var HOST = '192.168.0.16';
var PORT = 8333;
var client = net.connect(PORT, HOST, function connected(){
console.log('connected');
});
client.setKeepAlive(true, 1);
client.write('hi server');
client.on('data', function(data) {
console.log('Received' + data);
});
client.on('close', function(){
console.error('connection closed');
)};
client.on('error', function(err){
console.error('error', err);
});
Run Code Online (Sandbox Code Playgroud)
服务器.js
var net = require('net');
var HOST = '192.168.0.16';
var PORT = 8333;
net.createServer(function(sock) {
console.log('CONNECTED: ' + sock.remoteAddress + ':' + sock.remotePort); …Run Code Online (Sandbox Code Playgroud) 我正在创建一个服务器应用程序,该应用程序使用socket.write()将数据发送回客户端。
在这里,我遇到了管理缓冲区大小的问题。假设服务器和客户端之间的连接断开,并且服务器未意识到问题。因此,它将继续写入缓冲区。在这种情况下,我想限制最大缓冲区大小,以便它可以在消耗大量资源之前引发错误。
我知道node_buffer.h中的kMaxLength控制缓冲区的大小,但是我认为通过某些自定义方法更改其值不是一个好主意。还有其他方法可以管理大小吗?