如何在Node.js中处理多个传入连接?

时间:2015-03-09 16:16:30

标签: node.js sockets stdin

我用Node.js创建一个服务器:

var net = require('net');

var PORT = 8181;

var server = net.createServer(

  function(socket) {
    console.log(this.address());

    socket.on('data', function(data) {
      var msg = data.toString().replace(/\n$/, '');
      console.log('got: ' + msg);
    });

    process.stdin.on('readable',

      function() {

        var chunk = process.stdin.read();

        if (chunk !== null) {

          socket.write(chunk);
        }
      }
    )

    socket.write('heyyo\n');
  }
)

现在,当有多个连接进入时,此服务器仅将输入的内容发送到第一个连接。

我有两个问题:

  • 处理此问题的标准方法是什么,即将传入的套接字存储到数组中?

  • 究竟会发生什么导致readable事件无法到达其他连接的回调函数?

1 个答案:

答案 0 :(得分:2)

我强烈建议使用像socket.io这样的库。它使处理连接/断开连接以及在房间中放置插座非常简单。此外,您可以通过它提供的适配器类获得可用房间和连接套接字的完整列表。文档中提供了一个功能示例。