我做了一些东西来缩小我的 socket.on() 代码。
在这种情况下,我已经获得了客户端套接字
...
var io = require('socket.io').listen(...);
io.sockets.on('connection', function(socket) {
// my code for this client
...
});
在我有这个之前
socket.on('event1', function(args1) {callback1(args1);});
socket.on('event2', function(args2) {callback2(args2);});
...
socket.on('eventN', function(argsN) {callbackN(argsN);});
我现在有
var events = {
event1: 'callback1',
event2: 'callback2',
...
eventN: 'callbackN'
};
for(var event in events) {
var callback = events[event];
socket.on(event, function() {
this[callback].apply(this, arguments);
});
}
似乎总是调用 callbackN 函数。当 event1 用 args1 触发时,callbackN 用 args1 调用,当 event2 用 args2 触发时,callbackN 用 args2 调用。
怎么了 ?