1 var net = require("net");
2
3 var count = 0;
4 var user = {};//存储用户
5 // 创建tcp服务器
6 var server = net.createServer(function(socket){
7 socket.write(`now have ${count} at this node chat ,please say your name \r\n`);
8 count++;
9 var nickname;//临时存储用户名字
10 //公共广播方法
11 function broadcast(msg){
12 for(var i in user){
13 if(i!=nickname){
14 user[i].write(msg);
15 }
16 }
17 }
18 var temp="";
19 socket.on("data",function(data){
20 temp+=data;//将输入的字符拼接
21 data = temp.replace(/\r|\n/g,"");//检测如果用户回车操作。替换掉
22 if(temp.indexOf("\n")===-1){//判断是否有回车,如果有则结束,没有的话return继续拼接
23 return;
24 };
25 if(!nickname){
26 if(user[data]){//用户名存在的时候
27 socket.rwite(`name has been used ,please try other\r\n`);
28 temp="";
29 return
30 }else{
31 nickname=data;
32 user[nickname] = socket;//此处socket不明白,说是一个链接
33 broadcast(`${nickname} join the chat\r\n`);
34 }
35 }
36 else{
37 broadcast(`${nickname} say: ${data}\r\n`)
38 }
39 temp="";40 });
41 socket.on("close",function(){//用户离开
42 count--;
43 delete user[nickname];
44 broadcast(`${nickname} leave the room\r\n`)
45 })
46 });
47 server.listen(9000,function(){
48 console.log("running on 9000");
49 })