2015-04-28 5 views
6

Sto costruendo un server nodo intermedio che funge sia da client socket che server, voglio ascoltare gli eventi del server back-end e inoltrare gli eventi al client (browser) dopo l'elaborazione.Ottieni il nome dell'evento nella funzione di callback dell'evento nel 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.emit(this.event, data); // How can I get name of the outer event? 
}); 

Desidero ottenere il valore event_name nella richiamata. Come posso fare?

risposta

3

Si potrebbe provare qualcosa di simile:

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

Grazie. Questo ha funzionato per me. !! –

6

Non sono sicuro se è possibile ottenere il nome dell'evento dalla richiamata, ma è possibile risolverlo.

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