Run the code from the command line:
$ node chatServer.js
Open two more command line prompts, and telnet to port 9000 on each.
Whatever you type in one window will be displayed in the other.
var net = require('net');
var eol = require('os').EOL;
var srvr = net.createServer();
var clientList = [];
srvr.on('connection', function(client) {
client.name = client.remoteAddress + ':' + client.remotePort;
client.write('Welcome, ' + client.name + eol);
clientList.push(client);
client.on('data', function(data) {
broadcast(data, client);
if(data.toString().trim() === "\\list")
{
for(var i in clientList)
{
if(client === clientList[i])
{
for(var j in clientList)
{
clientList[i].write(clientList[j].name + "\n");
}
}
}
}
if(data.indexOf("\\rename") === 0)
{
var namae = data.toString().trim().replace("\\rename", "");
client.name = namae;
}
if(data.indexOf("\\private") === 0)
{
var namae = data.toString().trim().replace("\\private", "");
var realname = [];
for(var i = 0; i < namae.length; i++)
{
var words = namae[i].split(" ");
realname.push(words[0]);
}
//console.log(realname);
var okname = " ";
var n = 0;
for(var i = 1; i < realname.length; i++)
{
if(realname[i] !== "")
{
okname += realname[i];
}
else{
n = i;
break;
}
}
var speech = "";
for(var i = n; i < realname.length; i++)
{
if(realname[i] !== "")
{
speech += realname[i];
}
else{
speech += " ";
}
}
console.log(okname); //ok got a name
for(var i in clientList)
{
if(clientList[i].name === okname)
{
//console.log(okname + " is in lol");
clientList[i].write(client.name + " says " + speech + "\n");
}
}
}
});
});
function broadcast(data, client) {
for (var i in clientList) {
if (client !== clientList[i] && data.indexOf("\\private") !== 0 && data.indexOf("\\rename") !== 0 && data.toString().trim() !== "\\list") {
clientList[i].write(client.name + " says " + data);
}
}
}
srvr.listen(9000);
No comments:
Post a Comment