websocket实现简单的两端双向实时通信
websocket是一种协议,建立在TCP之上
与HTTP最大的区别就是服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话
HTTP 协议的缺陷:通信只能由客户端发起,如果服务器有连续的状态变化,只能使用轮训的方式,每隔一段时间去发送请求进行查询
websocket的几个特点:
1)建立在 TCP 协议之上,服务器端的实现比较容易
2)与 HTTP 协议有着良好的兼容性,能通过各种 HTTP 代理服务器
3)数据格式轻量,性能开销小,通信快,可以发送文本,也可以发送二进制数据
4)没有同源限制,客户端可以与任意服务器通信
5)协议标识符是ws(如果加密,则为wss)服务器地址就是 url 地址

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<input type="text" id="inp">
<button onclick="mysend()">发送</button>
<script>
function mysend() {
var value = document.getElementById('inp').value;
var ws = new WebSocket('ws://localhost:3009');
//连接成功后调用
ws.onopen = function(evt) {
console.log('WebSocket is open now')
ws.send(value);
}
//接收服务器消息时调用
ws.onmessage = function(evt) {
// ws.send(value);
ws.close();
}
//连接关闭后调用
ws.onclose = function() {
console.log('WebSocket is closed now')
}
}
</script>
</body>
</html>
app.js
创建websocket服务,进行监听客户端发来的数据
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 3009 });
//wss对象可以响应connection事件来处理这个WebSocket
wss.on('connection', ws => {
//监听message
ws.on('message', msg => {
console.log(`客户端发过来的数据: ${msg}`)
ws.send();
})
})

浙公网安备 33010602011771号