2014-10-07 43 views
0

有沒有辦法在發佈消息之前全局自動修改消息?沿着jQuery ajax的beforeSendsocket.io v1.1 beforeSend?

現在,我正在爲每個emit手動添加一個時間戳到有效負載,並且它會比自動完成的錯誤更容易出錯。

謝謝!

回答

0

您可以覆蓋.emit()方法(保存原來如此,你可以稱呼它),或者如果你控制所有調用.emit()的代碼,那麼就使自己的方法,增加了時間戳的有效載荷,然後調用.emit()

修補原來.emit(),你可以這樣做:

(function() { 
    var origEmit = Socket.prototype.emit; 
    Socket.prototype.emit = function(msg, data) { 
     if (typeof data === "object") { 
      data.timeStamp = Date.now(); 
     } 
     return origEmit.apply(this, arguments); 
    } 
})(); 

要創建自己的EMIT方法所有的代碼可以使用,你可以這樣做:

Socket.prototype.emitT = function(msg, data) { 
    if (typeof data === "object") { 
     data.timeStamp = Date.now(); 
    } 
    return this.emit.apply(this, arguments); 
} 
+0

是的,看起來像在這一點上它必須是這樣。我希望有一個內置的鉤子來避免必須做猴子修補或編寫包裝功能。 – lastoneisbearfood 2014-10-14 05:36:34