Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Added interval and count to setKeepAlive.

  • Loading branch information...
commit e2110f7aad39047ac9264928651579e555683061 1 parent 0f6d3e2
@fastest963 authored
Showing with 16 additions and 11 deletions.
  1. +11 −8 doc/api/net.markdown
  2. +2 −2 lib/net.js
  3. +3 −1 src/tcp_wrap.cc
View
19 doc/api/net.markdown
@@ -339,14 +339,17 @@ Disables the Nagle algorithm. By default TCP connections use the Nagle
algorithm, they buffer data before sending it off. Setting `noDelay` will
immediately fire off data each time `socket.write()` is called.
-#### socket.setKeepAlive(enable=false, [initialDelay])
-
-Enable/disable keep-alive functionality, and optionally set the initial
-delay before the first keepalive probe is sent on an idle socket.
-Set `initialDelay` (in milliseconds) to set the delay between the last
-data packet received and the first keepalive probe. Setting 0 for
-initialDelay will leave the value unchanged from the default
-(or previous) setting.
+#### socket.setKeepAlive(enable=false, [initialDelay], [probeInterval], [failureCount])
+
+Enable/disable keep-alive functionality, and optionally override default
+keep-alive options. Set `initialDelay` (in milliseconds) to set the delay
+between the last data packet received and the first keepalive probe. Set
+`probeInterval` (in milliseconds) to set the interval between the keep-
+alive probes sent after the initial probe. Set `failureCount` to set the
+maximum number of probes that can fail before the OS closes the connection.
+probeInterval and failureCount do not work on Windows OS. Setting 0 for
+initialDelay, probeInterval, or failureCount will leave the value unchanged
+from the default (or previous) setting.
#### socket.address()
View
4 lib/net.js
@@ -158,9 +158,9 @@ Socket.prototype.setNoDelay = function() {
};
-Socket.prototype.setKeepAlive = function(setting, msecs) {
+Socket.prototype.setKeepAlive = function(setting, msecs, interval, count) {
if (this._handle && this._handle.setKeepAlive)
- this._handle.setKeepAlive(setting, ~~(msecs / 1000));
+ this._handle.setKeepAlive(setting, ~~(msecs / 1000), ~~(interval / 1000), count);
};
View
4 src/tcp_wrap.cc
@@ -267,8 +267,10 @@ Handle<Value> TCPWrap::SetKeepAlive(const Arguments& args) {
int enable = args[0]->Int32Value();
unsigned int delay = args[1]->Uint32Value();
+ unsigned int interval = args[2]->Uint32Value();
+ unsigned int count = args[3]->Uint32Value();
- int r = uv_tcp_keepalive(&wrap->handle_, enable, delay);
+ int r = uv_tcp_keepalive(&wrap->handle_, enable, delay, interval, count);
if (r)
SetErrno(uv_last_error(uv_default_loop()));
Please sign in to comment.
Something went wrong with that request. Please try again.