前言
- 哈啰,大家好,我是洛林,对Web端即时通讯技术熟悉的开发者来说,回顾整个网页端IM的底层通信技术发展,从短轮询、长轮询,到后来的SSE以及WebSocket,我们使用的技术越来越先进,使用门槛也越来越低,给大家带来的网页端体验也越来越好。我在前面的的《3分钟使用 WebSocket 搭建属于自己的聊天室(WebSocket 原理、应用解析)》一文中介绍了众所熟知的WebSocket的技术,当其它的一些技术并不是没有用武之地,比如就以扫码登录而言,短轮询或长轮询就非常合适,完全没有使用大炮打蚊子的必要。
- 因此,我们很多时候没有必要盲目追求新技术,而是适合场景的技术才是最好的技术,掌握WebSocket这些主流新技术固然重要,但了解短轮询、长轮询等所谓的“老技术”仍然大有裨益,这就是我分享这篇技术的原因。
即时通讯
- 对于IM/消息推送这类即时通讯系统而言,系统的关键就是“实时通信”能力。所谓实时通信有以下两层含义:
复制代码
1、客户端可以主动向服务端发送信息。
2、当服务端内容发生变化时,服务端可以实时通知客户端。
常用技术
- 客户端轮询:传统意义上的短轮询(Short Polling)
- 服务器端轮询:长轮询(Long Polling)
- 单向服务器推送:Server-Sent Events(SSE)
- 全双工通信:WebSocket
短轮询(Short Polling)
实现原理
- 客户端向服务器端发送一个请求,服务器返回数据,然后客户端根据服务器端返回的数据进行处理。
- 客户端继续向服务器端发送请求,继续重复以上的步骤。(为了减小服务端压力一般会采用定时轮询的方式)
优点
- 实现简单,不需要额外开发,仅需要定时发起请求,解析响应即可。
缺点