我在我的项目中使用Socket.io 1.0,我想在服务器上绑定任何事件,例如:
socket.on('*')
所以我可以在我的客户端上做到这一点:
socket.emit('forum.post')
服务器会调用函数" 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 :(得分: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 Hopf问题的解决方案:Socket.io Client: respond to all events with one handler?