学习websocke通信协议

1、介绍

websocket是一种协议,设计用于提供低延迟、全双工和长期运行的连接。

2、传统通信和实时通信区别

传统通信
电子邮件、网页浏览、存在延迟,需要用户主动请求来获取更新数据。

实时通信
即时消息传递、音视频通信、在线会议和实时数据传输等,可以实现即时的数据传输和交流,不需要用户主动请求和刷新来获取更新数据。

3、websocket出现前的实时通信

(1)轮询:客户端定期向服务器发送请求,但产生大量的请求和响应,造成网络延迟。
(2)长轮询:在客户端发出请求后,保持连接打开,等待新数据响应后再关闭连接。解决了无效轮询的问题,但还是存在大量建立和关闭连接。
(3)comet:保持长连接,在返回请求后继续保持连接打开。和长轮询一样基于http的技术,虽然可以保持一直连接,但服务器给客户端推送数据依然是通过延长响应和推送技巧来实现的。

websocket的优势
一是双向实时通信,在需要快速实时更新的应用程序里,比http更加高效。
二是降低延迟,连接一旦建立,可以比http更低的延迟高效传输。
三是更有效的资源利用,可以减少重复请求和响应,只需要连接一次。

4、建立websocket连接

发送一次常规的http的get请求,并在请求头中带上upgrade参数
1750531-20260310212615554-758994444

5、websocket的心跳机制

为了保持websocket稳定的长连接,在连接建立之后,服务器和客户端之间通过心跳包来保持连接现状,以防止连接因为长时间没有数据传输而被切断。心跳包是一种特殊的数据包,不包含任何实际数据,仅用来维持连接状态。
通常情况下客户端定其发送一个空数据帧,确保连接仍然有效,避免长时间没有数据传输而被中断。

6、websocket的限制

(1)不提供加密功能:如有安全需求,需要采用其他方式确保安全,如SSL协议,设置黑白名单。
(2)不支持古老的浏览器:不支持IE10之前的版本,需要使用AJAX或其他方式进行代替。
(3)优化很重要:保持长连接需要服务器不断地维护和处理连接状态,长连接过多影响服务器性能,需要优化性能

参考:
https://www.bilibili.com/video/BV1ac411c7vr/?spm_id_from=333.1387.favlist.content.click&vd_source=d6067928eb906629adf6cc260761df74

posted @ 2026-03-10 21:40  时光如你般美好  阅读(3)  评论(0)    收藏  举报