Cómo probar socket.setKeepAlive en NodeJS

Intenté probar la función de setKeepAlive () en NodeJS. Ejecuté Server.js y client.js en diferentes máquinas dentro de la misma red local. Luego, apagué la conexión wifi en la máquina cliente (interrumpí la conexión a Internet). Después de 15 minutos, todavía no hay ningún mensaje lanzado. ¿Porqué es eso? ¿No funcionó SetKeepAlive ()?

Aquí está el código del servidor y del cliente:

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

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

Yo implementaría keep_alive yo mismo usando setInterval (sendKeepAliceFunc, delay) y socket.setTimeout ()

El retraso entre el mensaje keep_alive debe ser lo suficientemente grande (~ 10000ms), no es válido si el retraso es

Creo que la característica original keepalive no es confiable. Lo he logrado con éxito en otro lenguaje de progtwigción (C # y C) y puedo rastrear la red y ver los paquetes KEEP_ALIVE, pero luego NO funciona en algunas circunstancias (configuración de red especial, la gente puede ejecutar la aplicación en la máquina virtual, …)

Por lo tanto, sugiero que lo implemente usted mismo, puede implementar su propio socket con las mismas API, pero también tiene su nueva característica keepalive.