@TOC
一、什么是 websoket
websoket 是一种协议,用于提供 低延迟、全双工 和 长期运行 的链接
全双工
通信的两个参与方可以同时发送和接受数据
不需要等待对方的响应 | 传输完成
通过建立全双工的持久连接,客户端和服务器之间实现实时通讯
总结:解决实时通信的问题
二、什么是实时通讯
-
传统通信:存在延迟,需要用户主动请求来获取更新数据
-
实时通信:消息传递、音视频通话、在线会议和实时数据传输等,可以实现即时的数据传输和交流,不需要用户主动请求或刷新来获取更新数据
三、心跳机制
-
为什么需要心跳机制
-
为了保持 WebSocket 稳定的长连接,在连接建立之后,服务器和客户端之间通过心跳包来保持连接状态
-
防止连接因为长时间没有数据传输而被切断
-
-
什么是心跳机制
-
定期发送一个空数据帧,不包含任何实际数据,仅用来维持连接状态确保链接仍然有效
-
避免长时间没有数据传输而被中断发送,后端收到后,返回一个心跳消息
-
如果超过一定时间还没重置,说明后端主动断开了
-
四、优势
-
双向实时通信
-
允许在单个、长时间的连接上进行双向实时通信
-
在需要快速实时更新的项目里,比HTTP更加高效
-
-
降低延迟:链接建立便会保持开放,数据可以在客户端和服务器之间以比 HTTP 更低的延迟进行传输
-
更高效的资源利用:可以减少重复请求和响应的开销,因为它的连接只需要建立一次
五、限制
-
不提供加密功能:如果有安全上的需求,需采用其他方式来确保安全性,如: SSL 协议,设置黑白名单
-
不支持古老的浏览器:不支持IE10以前的版本。需要使用 AJAX 或者其他方式来进行替代
-
性能 :保持长连接需要服务器不断地维护和处理连接状态,需要优化性能