//模块依赖
var net = require("net");
var count = 0;
var chunk = "";
var user = {};//记录所有用户的信息
var server = net.createServer(function (conn) {
conn.write('>Welcome to \033[96m node-chat\033[39m!'
+ '\n>' + count + ' other people are connected at this time.'
+ '\n> please write your name and press enter:'
);
count++;
console.log("\033[90m new connection!\033[39m");
var nickname;
conn.on("close", function () {
broadcast('\033[90m' + nickname + 'left the room\033[39m');
count--;
});
conn.on("data", function (data) {//监听输入,用chunk储存输入的值,不然会输入一个,服务器
//马上输出一个
//data = data.replace('\r\n', '');
if (data != '\r\n') {
chunk += data;
} else {
console.log('\n' + chunk);
if (!nickname) {
if (user[chunk]) {
conn.write('\033[93m> nickname allready in use,try again:\033[39m');
chunk = "";
return;
} else {
nickname = chunk;
user[nickname] = conn;
for (var i in user) {
if (i != nickname) {
broadcast('\033[90m' + nickname + ' joined the room\033[39m');
}
//user[i].write('\n\033[90m' + nickname + ' joined the room\033[39m\n');
}
}
}
//否则认为是聊天信息
else {
for (var i in user) {
if (i != nickname) {
user[i].write(nickname + ":" + chunk + '\n');
}
}
}
chunk = "";
}
});
conn.on("close", function () {
count--;
delete user[nickname];
})
conn.setEncoding("utf8");
})
server.listen(3000, function () {
console.log("\033[96m Server listening on *:3000\033[39m");
})
function broadcast(msg, exceptmyself) {
for (var i in user) {
if (!exceptmyself || i != nickname) {
user[i].write(msg);
}
}
}
服务器端:node index.js
客户端:telnet 127.0.0.1 3000