协议:HTTP/HTTPS协议(HTTPS协议只是在HTTP协议基础之上加密了而已)
版本:HTTP/1.0 HTTP/1.1
举一个例子:比如我发送10张图片,用HTTP/1.0版本的话,需要TCP连接和断开10次,这样比较浪费性能;因此在HTTP/1.1中进行了一个升级,同样我要发送10张图片,我向服务器先建立一个TCP连接,把10个请求同时发送出去,10个响应同时拿到,此时这个连接断开。(这样相当于只连接和断开一次TCP,就很节约性能了)
注意:不管是HTTP/1.0版本还是HTTP/1.1版本,我们想要数据,只能由客户端发起请求到服务器,服务器才能给我们响应,服务器是没有办法主动的把数据推送给我们的。所以说我们用的HTTP协议是单向的,是由客户端发起的。
WebSocket是一个双向通信的,它既可以由客户端向服务器发送请求,也可以由服务器主动的给客户端推送数据。WebSocket其实是一个新协议,跟HTTP协议基本没有关系。因为HTTP协议是单向的,而WebSocket是双向的。
WebSocket对象提供了一组 API,用于创建和管理 WebSocket连接,以及通过连接发送和接收数据。
注意:连接成功之后,WebSocket是一个持久的连接。
创建WebSocket:
1 | var Socket = new WebSocket('ws://echo.websocket.org') //创建一个WebSocket连接,与'ws://echo.websocket.org'WebSocket服务器建立连接 |
当然也有一个断开服务器的事件:
1 | var Socket = new WebSocket('ws://echo.websocket.org'); |
还会有一个错误事件:
1 | // 当错误的时候就会触发这个事件 |
需要注意的是:如果想发送数据的话,要等连接成功再发送,连接是需要时间的,如果你直接把发送的内容放在外面的话,会报一定的错误,如下代码所示:
1 | var Socket = new WebSocket('ws://echo.websocket.org'); |
1 | var Socket = new WebSocket('ws://echo.websocket.org'); |
现阶段,对于WebSocket协议的使用量不是很大,大家可以相对了解一下。
WebSocket和http一样,同属于应用层协议。它最重要的用途是实现了客户端和服务端之间的全双工通信,当服务端数据变化时,可以第一时间通知到客户端。
除此之外,它与http协议不同的地方还有: