在socket.io上捕获所有来自客户端的事件

我在我的项目上使用Socket.io 1.0,我想绑定服务器上的任何事件,如:

socket.on('*') 

所以我可以在我的客户端上做到这一点:

 socket.emit('forum.post') 

服务器将调用对象“论坛”的function“发布”。 这将是我的项目有一个更好的组织。 用我在网上find的一些方法,我会这样做来覆盖socket.io函数:

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

但是socket.on('*')永远不会被调用。

解决scheme,为我工作(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 }; 

解决scheme@Matthias Hopf问题: Socket.io客户端:用一个处理程序响应所有事件?