var errors = 0, connections = 0;
+var lastClose = 0;
+
+function maybeConnect (s) {
+ var now = new Date();
+ if (now - lastClose > 5000) {
+ // Just connect immediately
+ connect();
+ } else {
+ // Otherwise wait a little - see if this one is connected still. Just to
+ // avoid spinning at 100% cpu when the server totally rejects our
+ // connections.
+ setTimeout(function () {
+ if (s.writable && s.readable) connect();
+ }, 100);
+ }
+}
+
function connect () {
process.nextTick(function () {
var s = net.Stream();
var gotConnected = false;
s.connect(9000);
+
s.on('connect', function () {
gotConnected = true;
connections++;
- connect();
+ maybeConnect(s);
});
- var haderror = false;
-
s.on('close', function () {
if (gotConnected) connections--;
- //if (!haderror) connect();
- });
-
- s.on('end', function () {
- s.end();
+ lastClose = new Date();
});
s.on('error', function () {
- haderror = true;
errors++;
});
});
server = net.Server(function (socket) {
- socket.on('end', function () {
- socket.end();
- });
-
socket.on('error', function () {
errors++;
});