Node.js:基于TCP的telnet终端聊天

var net=require('net'),
    count = 0, //people total
    users={};
var server= net.createServer(function(conn){
    conn.setEncoding('utf8'); //设置读取的文字编码
    var nickname;
    conn.write('\n>Welcome to \033[91m node-chat!\033[39m'
    +'\n > \033[95m  共有'+count+'\033[39m 用户在线.'
    +'\n > 请输入昵称 : '
    );
    count++; //记录连接终端数
    conn.on('data',function(data){
        data=data.replace('\r\n','');//删除回车符
        if(!nickname){ //判断昵称是否存在
            if(users[data]){
                conn.write('\033[93m>昵称已经存在,请重试:\033[39m');
                return;
            }else{
                nickname=data;
                users[nickname]=conn;
                for(var i in users){
                    users[i].write('\033[90m >'+nickname+' 加入聊天室 \033[39m\n');
                }
            }
        }else{
            for(var i  in users){
              if(i != nickname){
                  users[i].write('\033[94m> '+nickname+' say: \033[39m'+data+'\n');
              }
            }
        }
    });
    conn.on('close',function(){
        count--;
        delete users[nickname];  //删除退出昵称
    }); //close connection count--
});

server.listen(3000,function(){
    console.log('\033[96m server listening on *:3000\033[39m');
});



转载于:https://my.oschina.net/websec/blog/194082

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值