2014-09-13 4 views
1

Я использую Socket.io 1.0 на мой проект, и я хотел бы, чтобы связать любое событие на сервере, что-то вроде:Поймайте все происходящее «испускают» от клиента на Socket.io

socket.on('*') 

так Я могу это сделать на моем клиенте:

socket.emit('forum.post') 

И сервер будет называть функцию «сообщение» объекта «Форум». Это будет иметь лучшую организацию в моем проекте. С некоторыми методами, которые я нашел в Интернете, я хотел бы сделать, что переопределить функцию Socket.io:

var onevent = socket.onevent; 
socket.onevent = function() { 
    console.log('***','on',Array.prototype.slice.call(arguments)); 
    onevent.apply(socket, arguments); 
}; 

но socket.on («*») никогда не называется.

+0

проверить эту нить http://stackoverflow.com/questions/10405070/socket-io-client-respond-to-all-events-with-one -handler – Dslayer

+0

Должно быть легко с помощью https://github.com/turbonetix/socket.io-events – vesse

+0

Хорошо спасибо :). – Codel

ответ

1

Решение, которое сработало для меня (socket-io v1.3.5).

var Emitter = require('events').EventEmitter; 
var emit = Emitter.prototype.emit; 
// [...] 
var onevent = socket.onevent; 
socket.onevent = function (packet) { 
    var args = packet.data || []; 
    onevent.call (this, packet); // original call 
    emit.apply (this, ["*"].concat(args));  // additional call to catch-all 
}; 

Решение по вопросу @Matthias Хопфа: Socket.io Client: respond to all events with one handler?

 Смежные вопросы

  • Нет связанных вопросов^_^