Я написал счастливо сервер node.js, который использует socket.io для связи с клиентом. все это хорошо работает. socket.on («соединение» ...) обработчик получил немного большим, что заставил меня думать о альтернативном способе организовать свой код и добавить обработчик в функции генератора, как это:socket.io, добавление обработчика сообщений динамически
sessionSockets.on('connection', function (err, socket, session) {
control.generator.apply(socket, [session]);
}
в генератор принимает объект, который содержит гнездовые события и их соответствующие функции обработчика:
var config = {
//handler for event 'a'
a: function(data){
console.log('a');
},
//handler for event 'b'
b: function(data){
console.log('b');
}
};
function generator(session){
//set up socket.io handlers as per config
for(var method in config){
console.log('CONTROL: adding handler for '+method);
//'this' is the socket, generator is called in this way
this.on(method, function(data){
console.log('CONTROL: received '+method);
config[method].apply(this, data);
});
}
};
Я надеялся, что это будет добавить обработчик событий сокета к сокету, что это вид делает, но когда какое-либо событие приходит, он всегда вызывает последнее добавленное, в данном случае всегда b-функцию.
Кто-нибудь знает, что я делаю неправильно здесь?
У вас больше кода, например кода, который вы используете для запуска событий? –