Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Adding callback parameter to Socket's setTimeout method.

  • Loading branch information...
commit c70dd703016c111bf5f4a40c0b8869f423b9e327 1 parent 129217a
Ali Farhadi farhadi authored ry committed
4 doc/api/net.markdown
View
@@ -226,7 +226,7 @@ Useful to throttle back an upload.
Resumes reading after a call to `pause()`.
-#### socket.setTimeout(timeout)
+#### socket.setTimeout(timeout, [callback])
Sets the socket to timeout after `timeout` milliseconds of inactivity on
the socket. By default `net.Socket` do not have a timeout.
@@ -237,6 +237,8 @@ or `destroy()` the socket.
If `timeout` is 0, then the existing idle timeout is disabled.
+The optional `callback` parameter will be added as a one time listener for the `'timeout'` event.
+
#### socket.setNoDelay(noDelay=true)
Disables the Nagle algorithm. By default TCP connections use the Nagle
5 lib/net.js
View
@@ -690,10 +690,13 @@ Socket.prototype.setKeepAlive = function(enable, time) {
}
};
-Socket.prototype.setTimeout = function(msecs) {
+Socket.prototype.setTimeout = function(msecs, callback) {
if (msecs > 0) {
timers.enroll(this, msecs);
if (this.fd) { timers.active(this); }
+ if (callback) {
+ this.once('timeout', callback);
+ }
} else if (msecs === 0) {
timers.unenroll(this);
}
23 test/simple/test-net-socket-timeout.js
View
@@ -0,0 +1,23 @@
+var common = require('../common');
+var net = require('net');
+var assert = require('assert');
+
+var timedout = false;
+
+var server = net.Server();
+server.listen(common.PORT, function() {
+ var socket = net.createConnection(common.PORT);
+ socket.setTimeout(100, function() {
+ timedout = true;
+ socket.destroy();
+ server.close();
+ clearTimeout(timer);
+ });
+ var timer = setTimeout(function() {
+ process.exit(1);
+ }, 200);
+});
+
+process.on('exit', function() {
+ assert.ok(timedout);
+});
Please sign in to comment.
Something went wrong with that request. Please try again.