2012-01-25 16 views
10

Quiero ser capaz de manejar todos los mensajes que provienen de los clientes en un único controlador.Socket.io: ¿Cómo manejo todos los mensajes entrantes en el servidor?

Ejemplo código de cliente:

var socket = io.connect('http://localhost'); 
socket.emit('news', { hello: 'test' }); 
socket.emit('chat', { hello: 'test' }); 

Código de ejemplo del servidor:

io.sockets.on('connection', function (socket) { 
socket.on('message', function (data) { 
    console.log(data); 
}); }); 

Me gustaría ser capaz de registrar cada mensaje aunque su envió en las noticias, chat o cualquier otro nombre utilizando emitir. es posible?

Nota: El código del servidor anterior no funciona. No hay nada actualmente registrado. Me pregunto si hay un solo evento que podría manejarse para todos los mensajes por cada nombre de emisión.

+0

Tal vez esto => http://stackoverflow.com/a/7491506/11926? – Alfred

+0

Vea aquí una solución: http://stackoverflow.com/a/9674248/362536 – Brad

Respuesta

1

Esto es open issue con Socket.IO.

En este momento, si realmente lo necesita, probablemente tendrá que bifurcar Socket.IO. Consulte 3rd-Edens comment para saber cómo hacerlo.

+1

Bueno, esta definitivamente no es la respuesta que esperaba. – Joshua

+0

Yo tampoco, pero esa es la situación actual. Por otro lado, los cambios de los comentarios de 3rd-Edens son de solo 3-5 líneas y deberían ser lo suficientemente fáciles de implementar. – mtsr

6

Eso es posible por razones imperiosas zócalo. $ Emiten función

//Original func 
var x = socket.$emit; 

socket.$emit = function(){ 
    var event = arguments[0]; 
    var feed = arguments[1]; 

    //Log 
    console.log(event + ":" + feed); 

    //To pass listener 
    x.apply(this, Array.prototype.slice.call(arguments));  
}; 
+0

¿Funciona esto en los mensajes entrantes, porque desde el nombre de la función sugiere que es una función para los mensajes salientes? – mtsr

+0

funciona bien en el lado del cliente, pero no hay pruebas en el lado del servidor –

Cuestiones relacionadas