概述
本文是WebSocket系列的第一篇,主要介绍WebSocket相关的基础协议知识和API。由于WebSocket的相关介绍在MDN中分布较乱,初学者不太容易入门,因此通过本文将相关基础知识和使用方法进行一个归纳和总结。
本文主要内容如下:
-
WebSocket基础概念介绍
-
WebSocket协议初读
-
WebSocket 相关API浅析
-
WebSocket在线上项目中的使用
通过本文,你能够了解到WebSocket相关基础知识,同时了解到WebSocket在线上环境中是如何使用的。
WebSocket介绍
WebSockets 是一个可以创建和服务器间进行双向会话的高级技术。通过这个API你可以向服务器发送消息并接受基于事件驱动的响应,这样就不用向服务器轮询获取数据了。
上面是MDN中关于WebSocket的说明。其中双向会话
指的是客户端和服务端都能够通过WebSocket来进行数据的互相传递,即服务端可以给客户端推送数据,客户端也可以通过WebSocket来传递数据。
为什么要使用WebSocket
在不使用WebSocket时,如果我们需要建立一条长连接,有以下几种方法:
-
轮询
-
长轮询(常用)
-
SSE(Server Send Event)
下面,我们对这几个都进行简单的介绍。
轮询
轮询是最早在客户端用来模拟长连接的一种方式。他通过客户端定时想服务端发送HTTP请求来模拟客户端向服务端发送数据,而服务端的数据则是在客户端发送HTTP请求后跟随返回。
这种方案能够让客户端的数据几乎实时的到达,但是缺点也显而易见:服务端的数据需要在客户端的请求回来后才能带回。如果HTTP请求的间隔太短,则会导致大量的网络开销;如果间隔太长,这将导致数据传递的不及时。
长轮询
长轮询是在轮询的基础上改进的一种方式。在客户端发送HTTP请求且服务端收到请求时,服务端会先维持这个请求不返回。在特定的时间内&