美文网首页深入解读JavaScript
用Node.js的net创建TCP服务进行通信

用Node.js的net创建TCP服务进行通信

作者: 悟C | 来源:发表于2018-10-10 23:21 被阅读0次

    Node.js中的net模块提供了对TCP协议的封装,使用net模块可以轻松的构建一个TCP服务器,或构建一个连接TCP服务器的客户端。

    我们通过一个实例学习net模块,下面我们用net模块创建一个TCP服务进行通信,用telnet进行群聊:

    const events = require('events');
    const net = require('net');
    const channel = new events.EventEmitter();
    
    channel.clients = {};
    channel.subscription = {};
    
    channel.on('join', function(id, client) {
      this.clients[id] = client;
      this.subscription[id] = (senderId, message) => {
        if (id != senderId) {
          this.clients[id].write(id + ': ' + message);
        }
      };
      this.clients[id].write(`当前已加入的人数${this.listeners('broadcast').length + 1}\n`);
      this.on('broadcast', this.subscription[id]);
    });
    
    channel.on('leave', function(id) {
      channel.removeListener(
        'broadcast', this.subscription[id]
      );
      channel.emit('broadcast', id, `${id} has left the chatroom.\n`);
    });
    
    const server = net.createServer(client => {
      const id = `${client.remoteAddress}:${client.remotePort}`;
      
      console.log('有TCP客服端连接入');
    
      channel.emit('join', id, client);
    
      client.on('data', data => {
        data = data.toString();
        channel.emit('broadcast', id, data);
      });
    
      client.on('close', () => {
        console.log('有人离开');
        channel.emit('leave', id);
      });
    });
    
    server.listen(8888, function() {
      console.log('开启8888端口');
    });
    

    通过终端输入:

    telnet localhost 8888
    
    WechatIMG37.png

    只要连接到localhost 8888,我们可以开始聊天了。

    相关文章

      网友评论

        本文标题:用Node.js的net创建TCP服务进行通信

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