基于TCP的聊天系统

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wade333777/article/details/70863770

服务端:node index.js

const net = require('net')

var count = 0
var users = {}


var server = net.createServer(function(_conn){
    console.log('\033[90m   new connection! \033[39m')

    var __nickname

    function broadcast(_msg){
        for(var i in users){
            if(i != __nickname){
                users[i].write(_msg)
            }
        }
    }

    _conn.setEncoding('utf8')

    _conn.write('\n > welcome to \033[92mnode-chat\033[39m'
        + '\n >' + count + ' other people are connected at this time'
        + '\n > please write your name and press enter:')

    count++

    _conn.on('data',function(_data){
        console.log(_data)
        _data.replace('\r\n','')

        if(!__nickname){
            if(users[_data]){
                return _conn.write('\033[93m > nickname already in use. try again:\033[39m')
            }else{
                __nickname = _data
                users[__nickname] = _conn 

                broadcast('\033[90m >' + __nickname + ' joined the room \033[39m\n')
            }
        }else{
            broadcast('\033[96m >' + __nickname + ' :\033[39m' + _data + '\n')
        }
    })

    _conn.on('close',function(){
        count--
        delete users[__nickname]
        broadcast('\033[90m >' + __nickname + ' left the room \033[39m\n')
    })
})

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

客户端:telnet localhost 3000

猜你喜欢

转载自blog.csdn.net/wade333777/article/details/70863770