初步了解websocket

131 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第28天,点击查看活动详情

简介

WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。

WebSocket 是一种数据通信协议,位于OSI模型的应用层。可在单个TCP连接上进行全双工通信,能更好的节省服务器资源和带宽并达到实时通迅, 类似于我们常见的 http 协议。

它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

典型的websocket应用场景:

  • 即时通讯.....客服
  • 聊天室 广播
  • 点餐

socket技术

  1. 客户端:发socket请求

    1. 可以用原生的
    2. 可以使用包 socket.io
  2. 服务器端: 提供socket服务

    1. socket.io

image-20201121170006970.png

为什么需要websocket

因为 HTTP 协议有一个缺陷:通信只能由客户端发起。http基于请求响应实现.

举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。

这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用轮询:每隔一段时候,就发出一个询问,了解服务器有没有新的信息。最典型的场景就是聊天室。

轮询的效率低,非常浪费资源(因为必须不停连接,或者 HTTP 连接始终打开)。因此,工程师们一直在思考,有没有更好的方法。WebSocket 就是这样发明的。

优点:

  • 开销较小,因为不用像http每次请求的时候都需要携带完整的头部
  • 实时性强,因为不用像http请求需要等待客户端发起请求才能响应,websocket会有更强的实时性
  • 支持扩展,用户可以扩展websocket协议,自定义部分的子协议