美文网首页
node socket 在控制台实现一个简单的聊天室

node socket 在控制台实现一个简单的聊天室

作者: LilyLaw | 来源:发表于2019-10-29 17:40 被阅读0次

在node环境下,实现一个基于控制台的简单聊天室,客户端和服务端能收发消息即可(假设在同一个局域网内访问)。

涉及到通信,基础 netsocket

思路及算法

  1. 首先要创建一个服务端
  2. 给服务端分配一个端口,用作客户端访问它的门(入口),同时监听服务器的启动情况。
  3. 给服务端创建一个事件监听器,用来处理当服务端在控制台有输入时,将其输入的信息发送到客户端。
  4. 给服务端创建一个事件监听器,用来处理当有数据从客户端发来时的操作。
  5. 创建一个客户端。
  6. 客户端通过服务端给出的端口和IP创建对它的链接(如果是在同一台机器上,则IP可忽略)。
  7. 给客户端创建一个事件监听器,用来处理当客户端在控制台有输入时,将其输入的信息发送到服务端。
  8. 给客户端创建一个事件监听器,用来处理当有数据从服务端发来时的操作。

代码

// server.js

const net = require('net');

// 创建一个socket服务器
let server = net.createServer(socketConnect)

// 当有客户端与我链接时触发
function socketConnect(socket){
    console.log('有人连接我了!!!');
    
    // 监听有数据从客户端发过来时
    socket.on('data',(chunk)=>{
        // 将客户端发过来的数据显示出来
        process.stdout.write(chunk.toString());
    });
    
    // 当服务端在控制台主动写数据时
    process.stdin.on('data',(chunk)=>{
        // 将输入传入socket,客户端才可以接收。
        socket.write('server > '+chunk.toString()); // 往socket里面写东西
    });
}

// 给此项服务分配一个端口
let myPort = 2003;

//启动服务,并监听服务器启动情况。
server.listen(myPort,(err)=>{
    if(err) throw err;
    
    console.log(`服务器已启动,正在监听【 ${myPort} 】端口`);
});
// client.js

const net = require('net');

// 服务端的端口
const serverPort = 2003;

// 此处我们假设客户端和服务端在一台主机上,则不考虑IP这个因素。
// 建立与服务端的链接
let client = net.connect(serverPort,(err)=>{
    if(err) throw err;
    
    console.log(`已连接到服务器`);
    
    // 当服务端在控制台主动写数据时
    process.stdin.on('data',(chunk)=>{
        // 将输入传入socket,服务端才可以接收。
        client.write('client > '+chunk.toString()); // 往socket里面写东西
    })
});

// 监听有数据从服务端发过来时
client.on('data',(chunk)=>{
    // 将服务端发过来的数据显示出来
    process.stdout.write(chunk.toString());
});

测试运行结果

在控制台的两个窗口分别输入以下命令

nodemon server.js

nodemon client.js

在服务端和客户端控制台随便写入一些信息,则可看到双方接收情况,下面是我自己的测试结果:

socket.png

相关文章

网友评论

      本文标题:node socket 在控制台实现一个简单的聊天室

      本文链接:https://www.haomeiwen.com/subject/admgvctx.html