目录
介绍
网络上的两个程序通过一个双向的通信连接实现数据交互,这个连接的一端称之为socket。所以建立网络通信连接至少要一对socket。
socket主要解决的是页面之间长连接和数据交互的问题。
心跳机制
‘防止客户端和服务器端长时间没有通讯,每隔几秒会自动向客户端发送一个不相关的消息告诉对方我还活着,socket模块是没有的心跳机制的,实现心跳机制代码需要开发者自己去完成’
客户端每隔一段时间向服务端发送一个特有的心跳消息,每次服务端收到消息后只需将消息返回,此时,若二者还保持连接,则客户端就会收到消息,若没收到,则说明连接断开,此时,客户端就要主动重连,完成一个周期
断线重连
客户端和服务端如果长时间没有通讯,浏览器及服务器会出于安全和性能的考虑,会自动把连接断开 。如客户端发送了消息,服务器端未返回数据则认定为断开连接,这时会触发socket中的onclose事件需要重新连接
服务器端模块与使用
npm install ws //安装模块
var WebSocketServer=require('ws').Server //使用ws模块并使用他的server方法
wss = new WebSocketServer( {port:8081} ) //创建实例并起端口号8081
//监听连接 有用户连接了服务器就会触发此函数,ws表示用户的属性(单个用户)
wss.on('connection',(ws)=>{
console.log("有用户连接服务器了....")
ws.on( 'message',(data)=>{//监听客户端发来的数据
console.log("客户端发来的数据:",data)
} )
})
客户端连接及代码
var ws = new WebSocket('ws:127.0.0.1:8080/') //与服务器端建立连接
var str = input.value
ws.send(str) //往服务器发送数据
ws.onmessage=e=>{ //接收服务器发过来的数据
var data = e.data
}
ws.onopen=()=>{
console.log('hello')
}
1.onopen方法:当服务器响应了WebSocket连接请求,那么open事件触发并且建立一个连接, open事件对应的回调函数就是onopen。
2.onmessage方法:接收到消息时触发
3.onclose方法:在WebSocket连接关闭的时候触发,对应的回调函数是onclose。一旦连接关闭,那么客户端或者服务器就不再能接收或者发送信息。
4.onerror方法:在响应意外故障的时候触发,对应的回调函数是onerror。错误还会导致WebSocket连接关闭。
5.send方法:向服务端发送数据