socket.io v1.1 beforeSend?

时间:2014-10-07 05:18:26

标签: socket.io socket.io-1.0

有没有办法在发出消息之前全局并自动修改消息? jQuery ajax' s beforeSend

现在,我手动为每个emit的有效负载添加时间戳,并且自动完成更容易出错。

谢谢!

1 个答案:

答案 0 :(得分: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);
 }