我已经阅读过Node.js的教程,但似乎一切都是针对从服务器端如何处理它。我正在玩它,看看如何使用非阻塞i / o写入我们网络上的多个设备。这是我到目前为止(粗略的代码,对不起):
var net = require('net');
var nodes = [<list of IP addresses>];
function connectToServer(ip) {
conn = net.createConnection(3083, ip);
console.log ("Creating connection to: " + ip + "\n");
conn.on('connect', function() {
conn.write ("act-user::myuser:ex1::mypass;");
});
conn.on('data', function(data) {
var read = data.toString();
if (read.match('ex1'))
{
console.log(ip + ": " + read);
}
});
conn.on('end', function() {
});
}
nodes.forEach(function(node) {
connectToServer(node);
});
我看到它通过列表并启动与每个IP地址的连接,但是它似乎一遍又一遍地将登录行写入同一主机。我觉得某个地方我正在让我的溪流交叉(就像Egon说永远不会这样),但我不确定如何解决它。非阻塞node.js世界仍然很难让我思考。
答案 0 :(得分:2)
您的问题是JavaScript纠结。在JavaScript中,如果在其之前没有var
定义变量,则将其设置为全局变量。这发生在conn
函数中的connectToServer()
变量中。正在覆盖conn
,并且在退出connectToServer
范围后不会重置。{/ p>
尝试在以下前面添加var。
conn = net.createConnection(3083, ip);
结果
var conn = net.createConnection(3083, ip);