如何在使用node.js时将数据发送到指定的连接

时间:2011-06-02 03:41:29

标签: javascript http node.js tcp

我正在使用node.js构建TCP服务器,就像doc中的示例一样。服务器建立持久连接并处理客户端请求。但我还需要将数据发送到任何指定的连接,这意味着此操作不是由客户端驱动的。怎么做?

1 个答案:

答案 0 :(得分:8)

您的服务器可以通过添加服务器“connection”事件并删除流“close”事件来维护活动连接的数据结构。然后,您可以从该数据结构中选择所需的连接,并随时将数据写入其中。

以下是时间服务器的一个简单示例,它每秒向所有连接的客户端发送当前时间:

var net = require('net')
  , clients = {}; // Contains all active clients at any time.

net.createServer().on('connection', function(sock) {
  clients[sock.fd] = sock; // Add the client, keyed by fd.
  sock.on('close', function() {
    delete clients[sock.fd]; // Remove the client.
  });
}).listen(5555, 'localhost');

setInterval(function() { // Write the time to all clients every second.
  var i, sock;
  for (i in clients) {
    sock = clients[i];
    if (sock.writable) { // In case it closed while we are iterating.
      sock.write(new Date().toString() + "\n");
    }
  }
}, 1000);