nodejsに基づくtcpチャットルーム
12658 ワード
server
Cient
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()
});
});
端末からデータの入力を受け付けます.