Skip to content

Instantly share code, notes, and snippets.

@branneman
Created November 8, 2014 14:51
Show Gist options
  • Save branneman/0a77af5d10b93084e4f2 to your computer and use it in GitHub Desktop.
Save branneman/0a77af5d10b93084e4f2 to your computer and use it in GitHub Desktop.
Node.js TCP Socket - if either of them breaks, they'll keep trying to reconnect
var net = require('net');
//
// Client
//
function openSocket() {
var socket = net.connect(3e3);
socket.setKeepAlive(true);
socket.on('connect', onConnect.bind({}, socket));
socket.on('error', onError.bind({}, socket));
}
var interval;
function onConnect(socket) {
console.log('Socket is open!');
interval = setInterval(function() {
var msg = parseInt(+new Date) + '';
socket.write(msg, function() {
console.log('Sent:', msg);
});
}, 500);
}
function onError(socket) {
console.log('Socket error!');
// Kill socket
clearInterval(interval);
socket.destroy();
socket.unref();
// Re-open socket
setTimeout(openSocket, 1e3);
}
openSocket();
var net = require('net');
//
// Server
//
var server = new net.Server();
server.on('connection', function(socket) {
console.log('Socket is open!');
socket.setEncoding('utf8');
socket.on('data', function(data) {
console.log('Received:', data);
});
socket.on('error', function() {
console.log('Socket error!');
});
});
server.listen(3e3, function() {
console.log('Server is listening!');
});
@chipbrommer
Copy link

Printing the error is a simple fix. in the 'error' listener; change the console log to 'console.log(error);' this will output the error instead of the verbiage he has written.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment