Created
September 19, 2015 10:39
-
-
Save bitbandi/1c83ea416e0b6429a374 to your computer and use it in GitHub Desktop.
nodejs tcp broadcast
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var net = require('net'); | |
var sockets = []; | |
var port = 8000; | |
var remoteHost = "127.0.0.1"; | |
var remotePort = 1234; | |
var server = net.createServer(function(socket) { | |
socket.name = socket.remoteAddress + ":" + socket.remotePort | |
sockets.push(socket); | |
// Log it to the server output | |
console.log(socket.name + ' joined to broadcasr.'); | |
socket.write("Welcome to telnet chat!\n"); | |
// When client leaves | |
socket.on('end', function() { | |
console.log(socket.name + " left the broadcast.\n"); | |
// Remove client from socket array | |
sockets.splice(sockets.indexOf(socket), 1); | |
}); | |
// When socket gets errors | |
socket.on('error', function(error) { | |
console.log('Socket got problems: ', error.message); | |
}); | |
}); | |
// Listening for any problems with the server | |
server.on('error', function(error) { | |
console.log("So we got problems!", error.message); | |
}); | |
var serviceSocket = net.connect(parseInt(remotePort), remoteHost, function () { | |
console.log('Connected to remote'); | |
}); | |
serviceSocket.on("data", function (data) { | |
// If there are no sockets, then don't broadcast any messages | |
if (sockets.length === 0) { | |
return; | |
} | |
// If there are clients remaining then broadcast message | |
sockets.forEach(function(socket, index, array){ | |
socket.write(data); | |
}); | |
}); | |
// Listen for a port to telnet to | |
// then in the terminal just run 'telnet localhost [port]' | |
server.listen(port, function() { | |
console.log("Server listening at localhost:" + port); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment