gpt4 book ai didi

javascript - 拦截 WebSocket 消息

转载 作者:行者123 更新时间:2023-12-05 00:30:02 43 4
gpt4 key购买 nike

使用 ajax 请求可以使用以下代码完成:

let oldXHROpen = window.XMLHttpRequest.prototype.open;
window.lastXhr = '';
window.XMLHttpRequest.prototype.open = function(method, url, async, user, password) {
this.addEventListener('load', function() {
window.lastXhr = this.responseText;
});
return oldXHROpen.apply(this, arguments);
};
lastXhr变量将保存最后的响应。
但是对于 websockets 又如何实现呢?

最佳答案

you would need to make this wrapper as soon as possible


对于那个答案@brunoff,你是对的..你总是可以在服务器之前通过木偶窗口逻辑使用你的函数, 你可以劫持 data来自 MessageEvent本身
function listen(fn){
fn=fn||console.log
let property=Object.getOwnPropertyDescriptor
(MessageEvent.prototype,"data")
const data=property.get
function lookAtMessage(){ //to replace get function
let socket=this.currentTarget instanceof WebSocket
if(!socket){return data.call(this)}
let msg=data.call(this)
Object.defineProperty(this,"data",{value:msg}) //anti-loop
fn({data:msg,socket:this.currentTarget,event:this})
return msg
}
property.get=lookAtMessage
Object.defineProperty
(MessageEvent.prototype,"data",property)
}
listen( ({data})=>console.log(data) )
您可以尝试在 this page 上的控制台中输入代码并运行它。然后运行他们的 websocket 示例

关于javascript - 拦截 WebSocket 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70205816/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com