node.js引入net模块,建立tcp服务器,写一个聊天室

 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 })

 

posted @ 2018-05-03 11:21  web前端煜  阅读(194)  评论(0)    收藏  举报