如何覆盖WebSocket send()方法

时间:2016-10-31 11:23:22

标签: javascript websocket override

我试图覆盖WebSocket.send()方法。 我的目标是能够模糊发送的数据以测试服务器实现的稳健性。

我采用这种方法:

// OVERRIDE WEBSOCKET SEND METHOD
WebSocket.prototype.oldSend = WebSocket.prototype.send;

WebSocket.prototype.send = function(data) {
     console.log("ws: sending data");
     WebSocket.prototype.oldSend(data);
};

第一次调用WebSocket.prototype.oldSend(data)命令时失败,错误如下:     发送失败:'发送'调用了一个没有实现接口WebSocket的对象。

任何人都可以覆盖内置的websocket发送方法(),或者我还缺少什么?

TIA

2 个答案:

答案 0 :(得分:1)

怎么样:

WebSocket.prototype.oldSend = WebSocket.prototype.send;

WebSocket.prototype.send = function(data) {
     console.log("ws: sending data");
     WebSocket.prototype.oldSend.apply(this, [data]);
};

JSFiddle

答案 1 :(得分:1)

据我所知,您无法覆盖WebSocket.send()实现,因为它在大多数浏览器中都是只读的。

你能做的就是:

this.userService.getPicture()
.then(response => {
     //You will probably need to fill this.file_srcs with data from response
     console.log(this.file_srcs);
     if(this.fileCount > 0)
     {
        this.previewImage(this.fileToUpload)
     }
     console.log(typeof(response));
     return response;
})
.catch(this.displayError)

无论如何都应该做到这一点,而不会弄乱原型。