详细介绍 👉 面试官:说说对WebSocket的理解?应用场景?
WebSocket 是一种网络传输协议,可在单个TCP连接上进行 全双工通信 ,能更好的节省服务器资源和带宽并达到实时通迅。
客户端和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。
从上图可见,websocket服务器与客户端通过握手连接,连接成功后,两者都能主动的向对方发送或接受数据
而在websocket出现之前,开发实时web应用的方式为轮询
不停地向服务器发送 HTTP 请求,问有没有数据,有数据的话服务器就用响应报文回应。如果轮询的频率比较高,那么就可以近似地实现“实时通信”的效果
轮询的缺点也很明显,反复发送无效查询请求耗费了大量的带宽和 CPU资源。
全双工:
通信允许数据在两个方向上同时传输,它在能力上相当于两个单工通信方式的结合
例如指 A→B 的同时 B→A ,是 瞬时同步 的。
协议名:
引入 ws 和 wss 分别代表 明文 和 密文 的 websocket 协议,且默认端口使用80或443,几乎与http一致
ws://www.chrono.com
ws://www.chrono.com:8080/srv
wss://www.chrono.com:445/im?user_id=xxx
应用场景:
基于websocket的事实通信的特点,其存在的应用场景大概有:
- 弹幕
- 媒体聊天
- 协同编辑
- 基于位置的应用
- 体育实况更新
- 股票基金报价实时更新