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。
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频