我们经常需要用到推送相关的通知栏之类的来通知用户关于后端给予的信息提示,因此诞生了信息推送这种需求。
那么如何实现客户端与服务端的长链接?目前来看只能用到TCP 机制中的Scoket通讯,因为客户端传统的Request 是主动触发的,要实现实时信息通讯,即俗称IM则需要服务端与客户端建立一个长链接,实现Push 机制。
- 如果按传统的Scokect ,建立了长链接之后没有一个break的操作,那么客户端和服务端直接就会陷入一个接收和发送消息的死循环之中,及其耗费资源不说,各种体验也是相当的不好。
- 后续有一种想法就是,服务端搞一个短链接,如果超时的话就自动断开,这样子会部分解决相关的资源损耗问题,但是意义不大
- 基于1和2的方案,出现了一种叫做心跳包的概念,心跳包的实现原理就是:客户端和服务端约定一种信息接收分发的规则。比如客户端每隔1s发送一条信息,服务端2s超时这样子,保持状态长链接。
网友评论