Nodejs如何访问callback函数外的tcp套接字

如果我使用这个代码创build一个服务器:

var net = require('net'); server = net.createServer(function(sock){ /** some code here **/ }); server.listen(9000); 

如何访问callback函数之外的套接字? 这将帮助我能够创build一个数组/套接字列表,我可以存储和访问每当我需要发送数据到特定的客户端。

我有一个奇怪的解决方法,我目前正在使用,但我不认为这是正确的方法。 基本上我说socket添加到服务器对象:

 this.socket = sock 

里面的createServer的callback函数。

然后,我可以访问它说server.socket,但是这只有真正有用的,如果只有一个客户端。

为了更好地理解我正在尝试完成的事情,我创build了一个具有构造函数的类来保存这段代码:

 this.server = net.createServer(this.handleConnection) 

这个类也有方法handleConnection用作callback。 我也有一个叫start的方法,可以用一个端口作为参数来启动server.listen(port)

我想要完成的方法如下:

 sendCommand(message, socket){ socket.write(message); } 

这样服务器就可以从一个不在createServer的callback函数中的函数向客户端发送消息。 请记住,我正在从一个类中这样做,所以在callback函数中使用this关键字访问networking服务器对象,而不是我创build的类。

我看到的每个例子都是一个非常简单的tcp服务器,它只在callback函数中有一个从服务器发送的消息。 如果有人能够解释我的问题,那将是非常感谢!

我不确定这是你以后的事情,但我会做这样的事情。

 var net = require('net'); var conns = []; var server = net.createServer(function(sock){ conns.push(sock); sock.on('close', function (){ // TODO: Remove from conns }); }); server.listen(9000); 
 var net = require('net'); var listeners = []; server = net.createServer(function(sock){ /** some code here **/ listeners.push(sock); sock.on('close', function (){ var index = listeners.indexOf(sock); if (index > -1) { listeners.splice(index, 1); } }); }); server.listen(9000);