WebSocket是HTML5新增的一种通信协议,其特点是服务端可以主动向客户端推送信息,客户端也可以主动向服务端发送信息,是真正的双向平等对话,属于服务器推送技术的一种。
在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后浏览器和服务端之间就形成了一条快速通道,两者之间就直接可以数据相互传送,带来的好处是
相互沟通的Header很小,大概只有2Bytes。
服务器不再被动的接收到浏览器的请求之后才返回数据,而是在有新数据时就主动推送给浏览器。
为了建立一个WebSocket连接,浏览器首先要向服务器发起一个HTTP请求,这个请求和通常的HTTP请求不同,包含了一些附加头信息,其中附加头信息Upgrade: WebSocket表明这是一个申请协议升级的HTTP请求。服务端解析这些头信息,然后产生应答信息返回给客户端,客户端和服务端的WebSocket连接就建立起来了。双方就可以通过这个连接通道自由的传递信息,并且这个连接会持续直到客户端或者服务端的某一方主动关闭连接。
前端页面代码
var socket = io('http://192.168.1.82:3000');
// socket.emit('my other event', { my: 'hhh' });
socket.on('news', function (data) {
console.log('tttttt')
document.getElementById('ipt').innerHTML=data.hello
socket.emit('my other event', { my: 'hhh' })
socket.close();
});
}
服务端
const io=require('socket.io')(app)
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world'});
socket.on('my other event', function (data) {
console.log(data);
})