在套接字io中事件的callback函数中获取事件名称

我正在build立一个中介节点服务器作为套接字客户端和服务器,我想听后端服务器事件,然后处理后,将事件转发到客户端(浏览器)。

var socket = require('socket.io'), client = require('socket.io-client'); socket.on('event_name', function(data) { /* Logic to process response and relay to client */ client.emit(this.event, data); // How can I get name of the outer event? }); 

我想获得callback中的event_name值。 我能怎么做?

你可以尝试类似的东西:

 // List of events relayed to client var events = ['first_event', 'second_event', 'third_event']; for (var i in events) (function(e) { socket.on(e, function(data) { console.log(e); // You have access to the event name client.emit(e, data); // Relay to client }); })(events[i]); 

我不确定是否可以从callback中获取事件名称,但是可以解决此问题。

 var socket = require('socket.io'); function registerEvent(eventName, cb) { socket.on(eventName, function () { var args = [].slice.apply(arguments); args.unshift(eventName); cb.apply(null, args); }); } registerEvent('my_event', function (eventName, data) { // now you can access event name // it is prepended to arguments console.log('Event name', eventName); });