网络聊天室---node.js中net网络模块TCP服务端与客户端的使用
//1.简单创建 net服务器 // const net = require("net"); // const server = net.createServer((c)=>{ // //connection 监听器 // console.log("客户端已连接"); // c.on("end",()=>{ // console.log("客户端已断开连接"); // }) // c.write('你好\r\n'); // c.pipe(c); // }) // server.on('error',(err)=>{ // throw err // }) // server.listen(8000,()=>{ // console.log("服务器已启动") // }) //2.应用套字节对象 // var server = require('net').createServer((socket) => { // console.log('new connection'); // socket.setEncoding("UTF8"); // socket.on('data', (data) => { // console.log('got:', data.toString()); // if (data.trim().toLowerCase() === 'quit') { // socket.write('Bye!'); // return socket.end(); // } else { // socket.write(data + '----我已处理过的数据!\r\n') // } // }) // socket.on("end", () => { // console.log("客户端已断开连接"); // }) // }).listen(3000) //3.从套字节输出到文件 // var ws = require("fs").createWriteStream('output.txt'); // require('net').createServer(function(socket){ // socket.pipe(ws); // }).listen(4000) //4.从文件通过套字节输出到客户端 // require("net").createServer(function(socket){ // var rs = require('fs').createReadStream('output.txt'); // rs.pipe(socket) // // rs.pipe(socket,{end:false}) // }).listen(4000) //5.TCP聊天服务器 var net = require("net"); var server = net.createServer(); var sockets = []; //1.保存所有连接 server.on('error',function(err){ throw err }) //1.接受链接 server.on('connection',function(socket){ console.log('got a new connection'); sockets.push(socket);//2.保存 //2.从连接中读取数据 socket.setEncoding("UTF8"); socket.on('data',function(data){ console.log('got data:',data) //广播数据 将数据广播给所有的连接 sockets.forEach(function(otherSocket){ if(otherSocket !== socket){ otherSocket.write(data); } }) }) }) //3.连接被关闭时,将他删除 server.on('close',function(){ console.log('Server close'); var index = sockets.indexOf(socket); sockets.splice(index,1) }) server.listen('4000');
启动命令:telnet 127.0.0.1 4000