Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在事件'中获取事件名称;socketio中的s回调函数_Javascript_Node.js_Sockets_Socket.io - Fatal编程技术网

Javascript 在事件'中获取事件名称;socketio中的s回调函数

Javascript 在事件'中获取事件名称;socketio中的s回调函数,javascript,node.js,sockets,socket.io,Javascript,Node.js,Sockets,Socket.io,我正在构建一个中间节点服务器,它同时充当套接字客户端和服务器,我希望侦听后端服务器事件,然后在处理后将事件转发给客户端(浏览器) 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

我正在构建一个中间节点服务器,它同时充当套接字客户端和服务器,我希望侦听后端服务器事件,然后在处理后将事件转发给客户端(浏览器)

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?
});

我想在回调中获取
事件名称
值。我该怎么办?

我不确定您是否可以从回调中获取事件名称,但您可以解决它

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);
});

您可以尝试类似的方法:

// 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]);