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 }