Created
November 19, 2010 20:47
-
-
Save creationix/707146 to your computer and use it in GitHub Desktop.
A simple TCP based chat server written in node.js
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
// Load the TCP Library | |
net = require('net'); | |
// Keep track of the chat clients | |
var clients = []; | |
// Start a TCP Server | |
net.createServer(function (socket) { | |
// Identify this client | |
socket.name = socket.remoteAddress + ":" + socket.remotePort | |
// Put this new client in the list | |
clients.push(socket); | |
// Send a nice welcome message and announce | |
socket.write("Welcome " + socket.name + "\n"); | |
broadcast(socket.name + " joined the chat\n", socket); | |
// Handle incoming messages from clients. | |
socket.on('data', function (data) { | |
broadcast(socket.name + "> " + data, socket); | |
}); | |
// Remove the client from the list when it leaves | |
socket.on('end', function () { | |
clients.splice(clients.indexOf(socket), 1); | |
broadcast(socket.name + " left the chat.\n"); | |
}); | |
// Send a message to all clients | |
function broadcast(message, sender) { | |
clients.forEach(function (client) { | |
// Don't want to send it to sender | |
if (client === sender) return; | |
client.write(message); | |
}); | |
// Log it to the server output too | |
process.stdout.write(message) | |
} | |
}).listen(5000); | |
// Put a friendly message on the terminal of the server. | |
console.log("Chat server running at port 5000\n"); |
To All those who are complaining That this code is buggy
This is only the server code
You have to write the Client code by yourself to make this run properly
Here is a simple Client Code
var net = require('net')
var client = net.connect({port : 5000},function(){
console.log('connected to the server')
})
client.on('data',function(data){
console.log(data.toString())
//client.end()
})
client.write("Hello !!!!")
Also note that this code was written almost a decade ago! The node.js APIs and best practices have changed significantly since then.
Hi. I just want to open a socket that accepts tcp traffic. and when I telnet to that port I get notified ( may be console.log ). Is it even possible to telnet into a opened socket?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This is cool, can it be re-written to use pipe() instead of listening to events?