WebSocket是什么
在解释 WebSocket 之前,先来看个需求。
在股票交易时间内,股票的价格变化十分迅速,股票网站需要向正在浏览页面的用户实时更新股价,这个需求里的更新逻辑应该怎么实现呢?
传统的 HTTP 协议是无状态的,每次发出请求时建立连接,收到回复时便断开连接。如果使用 HTTP 协议来完成这个需求,则有两种实现方式可以选择:
使用 WebSocket 可以很好地解决这个问题。WebSocket 是 HTML 5 的一个主要特性,它是建立在 TCP 上的一种全双工协议,也就是说客户端可以向服务器发信息,服务器也可以向客户端推送消息。
WebSocket 在首次建立连接时,使用普通 HTTP 和服务器通信,同时告诉服务器后面的交互用 WebSocket 的方式。
在 WebSocket 连接建立后,往来的消息都可以通过这条管道发送,同时客户端与服务器也会不断地用 ping-pong 的方式保持心跳,防止连接异常断开。
将更新逻辑从 HTTP 迁移到 WebSocket 是很简单的,只需要实现 WebSocket 的几个接口,就能在支持的浏览器上使用 WebSocket 的双工特性。如果读者想做一个实时性很强的网页,或者想向网页及时推送一些信息,尽量选择 WebSocket。
在股票交易时间内,股票的价格变化十分迅速,股票网站需要向正在浏览页面的用户实时更新股价,这个需求里的更新逻辑应该怎么实现呢?
传统的 HTTP 协议是无状态的,每次发出请求时建立连接,收到回复时便断开连接。如果使用 HTTP 协议来完成这个需求,则有两种实现方式可以选择:
1) 使用轮询的方式
每隔几秒就重新向服务器发送一个请求,查询是否能获取最新的数据。这样做付岀的代价是,每次都要重新建立一次连接,建立连接就需要重新进行三次握手,发送 Header 等冗余信息,很浪费资源。2) 使用 HTTP 实现实时更新
通过 HTTP 实现实时更新的技术,就是 Comet,它的原理是发送一个更新请求后,就一直占据端口,等待服务器响应,直到服务器有数据返回时才会断开连接。一个请求一直不断开,也很浪费客户端和服务器的资源。使用 WebSocket 可以很好地解决这个问题。WebSocket 是 HTML 5 的一个主要特性,它是建立在 TCP 上的一种全双工协议,也就是说客户端可以向服务器发信息,服务器也可以向客户端推送消息。
WebSocket 在首次建立连接时,使用普通 HTTP 和服务器通信,同时告诉服务器后面的交互用 WebSocket 的方式。
在 WebSocket 连接建立后,往来的消息都可以通过这条管道发送,同时客户端与服务器也会不断地用 ping-pong 的方式保持心跳,防止连接异常断开。
将更新逻辑从 HTTP 迁移到 WebSocket 是很简单的,只需要实现 WebSocket 的几个接口,就能在支持的浏览器上使用 WebSocket 的双工特性。如果读者想做一个实时性很强的网页,或者想向网页及时推送一些信息,尽量选择 WebSocket。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算