阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Node.js 在一个 Node.js 实例中启动多个 REPL 实例

      Node.js 在一个 Node.js 实例中启动多个 REPL 实例

      可以在一个 Node.js 实例中创建并运行多个 REPL 实例,它们共享一个 global 对象但有独立的 I/O 接口。

      例子,在 stdin、Unix socket、和 TCP socket 上分别提供了独立的 REPL:

      const net = require('net');
      const repl = require('repl');
      let connections = 0;
      
      repl.start({
        prompt: 'Node.js 使用 stdin> ',
        input: process.stdin,
        output: process.stdout
      });
      
      net.createServer((socket) => {
        connections += 1;
        repl.start({
          prompt: 'Node.js 使用 Unix socket> ',
          input: socket,
          output: socket
        }).on('exit', () => {
          socket.end();
        });
      }).listen('/tmp/node-repl-sock');
      
      net.createServer((socket) => {
        connections += 1;
        repl.start({
          prompt: 'Node.js 使用 TCP socket> ',
          input: socket,
          output: socket
        }).on('exit', () => {
          socket.end();
        });
      }).listen(5001);
      

      从命令行运行这个应用会在 stdin 上启动一个 REPL。 其他 REPL 客户端可以通过 Unix socket 或 TCP socket 进行连接。 例如,可以使用 telnet 连接到 TCP socket,使用 socat 连接到 Unix socket 或 TCP socket。

      通过从一个基于 Unix socket 的服务器(而不是 stdin)启动一个 REPL,可以连接到一个长期运行的 Node.js 进程而无需重启它。

      例子,在一个 net.Server 实例和一个 net.Socket 实例上运行一个全特性的(terminal)REPL,详见:https://gist.github.com/TooTallNate/2209310。

      例子,在 curl(1) 上运行一个 REPL 实例,详见:https://gist.github.com/TooTallNate/2053342。


      更多内容请参考:Node.js repl 交互式解释器,或者通过 点击对应菜单 进行查看;


      目录
      本文目录
      目录