【发布时间】:2014-12-03 19:19:04
【问题描述】:
我不明白,为什么将参数传递给带有嵌套事件侦听器的事件发射器流所有值?是因为它必须通过上层“加入”侦听器吗?变量信息是否存储在某处?
var events = require('events');
var net = require('net');
var channel = new events.EventEmitter();
var i = 0;
var subscriptions;
// IF we have two connections
channel.on('join', function(subs) { // Upper Listener
console.log(subs); // -> output 0 when first client joined and 1 for second
channel.on('broadcast', function(subs2) { // lower listener
console.log(subs); // Stream of all connections: -> 0 and 1 ???
console.log(subs2); // Outputs last connection -> 1
});
});
var server = net.createServer(function(client) {
subscriptions = i++; // variable to pass
channel.emit('join', subscriptions); // pass the same variable
client.on('data', function(data) {
channel.emit('broadcast', subscriptions); // pass the same variable
});
});
server.listen(7000);
这将创建 TCP 服务器。然后你可以加入tellnet localhost 7000,
【问题讨论】:
-
我不确定我是否理解。 您正在创建频道、它的事件和订阅,因此您可以根据需要进行设置。如果您不想,也不必嵌套订阅。
标签: javascript node.js javascript-events stream