Skip to content

Instantly share code, notes, and snippets.

@bitbandi
Created September 19, 2015 10:39
Show Gist options
  • Save bitbandi/1c83ea416e0b6429a374 to your computer and use it in GitHub Desktop.
Save bitbandi/1c83ea416e0b6429a374 to your computer and use it in GitHub Desktop.
nodejs tcp broadcast
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