2014-09-13 97 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?