Почему NodeJS KeepAlive не работает должным образом?
Цитируется изTCP keepalive HowTo:
Чтобы понять, что делает TCP keepalive (который мы будем просто называть keepalive), вам нужно всего лишь прочитать имя: оставьте TCP живым. Это означает, что вы сможете проверить подключенный сокет (также известный как TCP-сокеты) и определить, установлено ли соединение и работает ли оно илиесли он сломался.
Так почему же следующий кодне бросать что-то когда интернет-соединение нарушено?
var tls = require('tls');
var socket = tls.connect(443, "google.com", function connected() {
console.log('connected');
});
socket.setNoDelay(true);
socket.setKeepAlive(true, 0);
socket.setTimeout(0, function(){
console.log('timeout');
});
socket.on('data', function(data) {
console.log(data);
});
socket.on('close', function() {
console.error("close");
});
socket.on('error', function(err) {
console.error("error", err);
});
Протестировано на MacOS / Debian, с NodeJS v0.10.17