2014-10-07 52 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