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。

相关文章

问题背景 最近小伙伴提了一个希望提高后台下拉列表可操作性的...
// n位随机数生成 function randomNum(n) { let sString = &...
HTML是HyperText Markup Language的简称,中文名称:超文本标...
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现...
JavaScript 是脚本语言,是一种解释性脚本语言(代码不进行预...
本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网...