如何重新定义ws.send以捕获数据
How to redefine ws.send to capture data?
如何在Chrome中重新定义ws.send以捕获发送的数据?
示例:
ws = new WebSocket('ws://mystuff.com');
ws.send = function(msg) {
console.log(msg); //should log 'test'
//Also somehow send the data as it would normally
};
ws.send('test');
您可以将send函数复制到一个新函数,然后覆盖原始函数以添加日志。每次创建websocket实例时,都必须执行此操作。
这就是你可以做到的。
//First, create a clone prototype
Function.prototype.clone = function() {
var that = this;
var temp = function temporary() { return that.apply(this, arguments); };
for(var key in this) {
if (this.hasOwnProperty(key)) {
temp[key] = this[key];
}
}
return temp;
};
//Then, when you create your ws object, use the clone function to copy the "send". For example, you can name the new function "parentSend"
ws = new WebSocket('ws://mystuff.com');
ws.parentSend = ws.send.clone();
//Finally, recode a new send function, with the logs, and the call to parentsend()
ws.send = function(msg){
console.log(msg);
this.parentSend(msg);
};
这将发送日志,并在之后调用原始函数
我用一种更简单的方法
var ws = new WebSocket("ws://example.com:80");
ws.oldSend = ws.send;
ws.send = function(data) {
ws.oldSend(data);
console.log('Captured data:', data);
};`
现在,每当我们调用ws.send时,它都会调用我们重新定义的ws.send,后者会发送它并记录发送的信息。
ws.send('Important data!'); //will show: Captured data: Important data!
相关文章:
- 用程序搜索JQuery数据表中的文本
- 要求输入在数据列表中
- 正在将数据主题添加到所有项目
- 函数参数中的数据与指定变量之间的任何性能差异
- 在VanillaJS中模拟模型双向数据绑定
- CSS-如何定位内容数据标题
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 序列化数据属性中对象的最可靠方法
- 如何将JSON数据导入我的ejs模板
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 画布数据到图像
- 使用jquery将mysql数据获取到新的表行中
- 使用html中的外部javascript进行数据验证
- 有时数据是't显示在浏览器中
- 如何重新定义ws.send以捕获数据
- 访问通过XHR.onreadystatechange回调中的XHR.send(data)发送的数据
- Express, AJAX - res.send 不发送任何数据
- Node . js检查mysql表中是否存在数据.—TypeError: res.send不是函数