一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第28天,点击查看活动详情
简介
WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。
WebSocket 是一种数据通信协议,位于OSI模型的应用层。可在单个TCP连接上进行全双工通信,能更好的节省服务器资源和带宽并达到实时通迅, 类似于我们常见的 http 协议。
它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。
典型的websocket应用场景:
- 即时通讯.....客服
- 聊天室 广播
- 点餐
socket技术
-
客户端:发socket请求
- 可以用原生的
- 可以使用包 socket.io
-
服务器端: 提供socket服务
-
socket.io
-
为什么需要websocket
因为 HTTP 协议有一个缺陷:通信只能由客户端发起。http基于请求响应实现.
举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。
这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用轮询:每隔一段时候,就发出一个询问,了解服务器有没有新的信息。最典型的场景就是聊天室。
轮询的效率低,非常浪费资源(因为必须不停连接,或者 HTTP 连接始终打开)。因此,工程师们一直在思考,有没有更好的方法。WebSocket 就是这样发明的。
优点:
- 开销较小,因为不用像http每次请求的时候都需要携带完整的头部
- 实时性强,因为不用像http请求需要等待客户端发起请求才能响应,websocket会有更强的实时性
- 支持扩展,用户可以扩展websocket协议,自定义部分的子协议