2014-09-13 107 views
1

我使用我的项目Socket.io 1.0,我想无论如何在服务器上绑定“发出”,是这样的:捕获所有事件从客户端上socket.io

​​

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

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处理程序 – Dslayer 2014-09-13 13:15:41

+0

应该很容易使用https://github.com/turbonetix/socket.io-events – vesse 2014-09-15 06:36:37

+0

好的谢谢你:)。 – Codel 2014-09-15 14:22:27

回答

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?