nodejsに基づくtcpチャットルーム

12658 ワード

server
var net = require('net');

var i = 0;

var clientList = [];

var server = net.createServer(function(socket){
    socket.name = '  '+(++i);
    socket.write('[   ]  '+socket.name+'
'
); clientList.push(socket); function showCients(){ console.log('[ ]:'); for(var i = 0;i<clientList.length;i++){ console.log(clientList[i].name); } } showCients(); socket.on('data',function(data){ for(var i = 0;i<clientList.length;i++){ if(socket !== clientList[i]){ clientList[i].write('['+socket.name+']'+data); } } }); socket.on("close",function(){ clientList.splice(clientList.indexOf(socket),1); showCients(); }); }); server.listen(8080)
現在送信されているdataのsocketが自分と等しくない場合は、他のsocketにループして送信します.
Cient
var net = require('net');

process.stdin.resume();

process.stdin.setEncoding('utf8');

var client = net.connect({port:8080},function(){
    console.log("        ");
    process.stdin.on('data',function(data){
        client.write(data);
    });
    client.on("data",function(data){
        console.log(data.toString());
    });

    client.on("end",function(){
        console.log("     ");
        process.exit();
    });
    client.on('"error',function(){
        console.log("    ");
        process.exit()
    });
});
端末からデータの入力を受け付けます.