即时通讯(Instant Messaging)是一种基于互联网的即时交流消息的业务。
类型:
- 在线push
- 适用:web页面 和 App
- 自己构建IM服务器
- 使用WebSocket
- 采用成熟的框架方案Socket.IO
- 对于App还可自己封装socket
- 使用第三方IM服务商提供的服务
- 离线push
- 适用:App
- 对于iOS,使用APNs
- 对于andorid,使用FCM(国外)或第三方IM服务商提供的服务
提供第三方IM服务的服务商有:
- 网易云信
- 融云
- 环信
- LeanCloud
下面只针对 「在线推送」 的自建方案来展开讲解。
需求场景
服务端需要主动推送消息给客户端,例如
- 用户下了订单,需要在运营管理后台向运营人员推送新订单通知
- 用户A关注了用户B,系统需要向用户B推送提示消息
- 即时聊天
传统的推送实现
HTTP/1.x 不支持服务器主动推送,只能在客户端发起请求后做出回应。 (HTTP/2支持服务器主动推送,但HTTP/2 还未全面实施)
-
轮询
轮询是在特定的的时间间隔(如每1秒),由客户端对服务器发出HTTP请求,了解服务器有没有新的信息,然后由服务器告知有无新数据或返回最新的数据