window.top.func_WebSocket_msg=console.log
var g_WS_backup = WebSocket;
//定义全局变量,用于保存WebSocket原函数地址
var g_WebSocket_msg = [];
//定义全局变量,用于保存新建立的WebSocket
WebSocket = function(url, protocols) {
//重写WebSocket函数
var m_newWebSocket = new Object;
//定义覆盖变量“m_newWebSocket”,用于新创建WebSocket
var m_send_addr = function(msg) {}
//定义新变量函数“m_send_addr”,用于保存WebSocket中“Send”函数的地址,便于处理替换原函数。
m_newWebSocket.ID = window.top.g_WebSocket_msg.length + 1;
//记录ID
window.top.func_WebSocket_msg('newWebSocket', m_newWebSocket.ID, url, protocols);
//callminiblink中设置的函数func_WebSocket_msg
m_newWebSocket = new window.top.g_WS_backup(url, protocols);
//建立新的WebSocket连接,使用全局变量中“g_WS_backup”保存的WebSocket原函数来创建。
m_send_addr = m_newWebSocket.send;
//保存新“WebSocket.send”地址,下面将进行重写。
m_newWebSocket.send = function WebSocket_HookSend(p_msg) {
//重写“WebSocket.send”函数
arguments[0] = window.top.func_WebSocket_msg('WebSocketSend', m_newWebSocket.ID,
p_msg);
m_send_addr.apply(this, arguments);
//通过 apply() 方法,能够编写用于不同对象的方法,防止出现非法调用的问题,该方法接受数组形式的参数。
}
// m_newWebSocket.onmessage=(data)=>{
// console.log(data)
// }
console.log(m_newWebSocket);
m_newWebSocket.addEventListener('close', function() {
//监听断开连接事件
window.top.func_WebSocket_msg('WebSocketClose', m_newWebSocket.ID);
var i = 0;
for (i; i < window.top.g_WebSocket_msg.length; i++) {
//枚举WebSocket
if (window.top.g_WebSocket_msg[i] == m_newWebSocket) {
//比较WebSocket是否相等
window.top.g_WebSocket_msg.splice(i, 1);
window.top.func_WebSocket_msg('WebSocketClose', m_newWebSocket.ID);
//若相等,则删除并跳出循环。
break;
}
}
})
window.top.g_WebSocket_msg.push(m_newWebSocket)
//保存WebSocket数据
return m_newWebSocket
}