首页 > 编程笔记 > Web笔记

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。

所有教程

优秀文章