1.WebSocket
在浏览器和服务器之间建立持久连接来交换数据的方法。数据可以作为“数据包”在两个方向上传递,而无需中断连接也无需额外的 HTTP 请求
2.简单使用
let socket = new WebSocket("wss://javascript.info/article/websocket/demo/hello"); // 创建WebSocket
socket.onopen = function(e) { // 连接已建立
alert("[open] Connection established");
alert("Sending to server");
socket.send("My name is John");
};
socket.onmessage = function(event) { // 接收到数据函数 event客户端返回的数据
alert(`[message] Data received from server: ${event.data}`);
};
socket.onclose = function(event) { // WebSocket 错误处理函数
if (event.wasClean) {
alert(`[close] Connection closed cleanly, code=${event.code} reason=${event.reason}`);
} else {
// 例如服务器进程被杀死或网络中断
// 在这种情况下,event.code 通常为 1006
alert('[close] Connection died');
}
};
socket.onerror = function(error) { // 连接已关闭
alert(`[error] ${error.message}`);
};
socket.send(moreData()) // 给服务端发送消息 方法可以发送文本或二进制数据
//当我们收到数据时,文本总是以字符串形式呈现。而对于二进制数据,我们可以在 Blob 和 ArrayBuffer 格式之间进行选择
3.WebSocket特性
websocket //不是v8引擎自带的,本身就是个关键词
var socket= new webSocket(url,[protocol] ); // 一定会有new webSocket
socket.readystate //获取当前请求的状态
socket.onopen //连接建立时触发
socket.onmessage //客户端接收服务端数据时触发 接收服务器数据
socket.send() //使用连接发送数据 发服务器数据
//1.搜索下断搜到很多
//2.找到socket对象hook send方法直接快速
//假设p是socket对象
//TODo hook
p.send_ = p.send;
p.send = function(x){
debugger;
return p.send_(z);
}