How to test socket.setKeepAlive in NodeJS

I tried to check the setKeepAlive () function in NodeJS. I ran Server.js and client.js on different machines on the same LAN. Then I disconnected the Wi-Fi connection on the client machine (Internet connection was interrupted). After 15 minutes, the message is still not displayed. Why is this? Doesn't setKeepAlive () work?

Here is the server and client code:

Client.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);
});

Server.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);

    sock.on('data', function(data) {
        console.log('DATA ' + sock.remoteAddress + ': ' + data);
        sock.write('hi client');
    });

    sock.on('close', function(data) {
        console.log('CLOSED: ' +
        sock.remoteAddress + ' ' + sock.remotePort);
    });

    sock.on('error', function(error){
        console.log('error', error);
    });

}).listen(PORT, HOST);

console.log('Server listening on ' + HOST +':'+ PORT);
+4
source share
1 answer

I would use keep_alive myself using setText ()

The delay between the keep_alive message should be large enough (~ 10000 ms), this is not valid if delay <round trip (?)

, keepalive . , (# C), KEEP_ALIVE, ( , ,...)

, API-, keepalive.

+2

All Articles