node.js的net模块实现简单终端聊天室

任务:

使用node.js的net模块实现一个终端的聊天室


server.js(服务端)

var net = require('net');
var clientList = [];

var server = net.createServer((socket)=>{
     
   clientList.push(socket);

   console.log('客户端连接成功!');

   socket.on('data', (data)=>{
     
      console.log(data.toString());
      broadcast(data);
   });
   
   socket.on('end', ()=>{
     
      console.log('客户端关闭连接');
   });

});

function broadcast(data) {
     
   for (const key in clientList) {
     
      clientList[key].write(data);
   }
}
server.listen(1337,'127.0.0.1', function () {
     
   console.log('server is listening...');
});

client.js(客户端):

var net = require('net');
var readline = require('readline');
var hostname = process.argv[2];
var port = process.argv[3];
var client = net.createConnection({
      host: hostname, port: port }, function () {
     
   console.log('连接到服务器!');

   process.stdin.setEncoding('utf-8');

  var read = readline.createInterface({
     
     input:process.stdin,
     output:process.stdout
  });
  read.on('line',(chunk)=>{
     
     client.write('data:'+chunk);
  })

});
client.on('data', function (data) {
     
   console.log(data.toString());
});

client.on('end', function () {
     
   console.log('断开与服务器的连接');
});

运行结果

  1. 启动服务端:node.js的net模块实现简单终端聊天室_第1张图片

  2. 启动第一个客户端:node.js的net模块实现简单终端聊天室_第2张图片

  3. 启动第二个客户端:node.js的net模块实现简单终端聊天室_第3张图片
    注意:客户端连接的ip地址和端口号从命令行获取,这里连接的是本机地址的1337端口。

你可能感兴趣的:(node.js,socket,node.js)