IM消息重试机制Java实现_IM+推送+心跳机制

本文介绍了IM消息推送的实现方式,包括长连接、轮询和SMS,并详细讲解了心跳包的作用、心跳包与轮询的区别以及在NAT超时情况下的应对策略。此外,还讨论了TCP KeepAlive不能替代应用层心跳保活的原因,并分析了心跳时间间隔选择以及心跳保活对长连接的影响和潜在问题。
摘要由CSDN通过智能技术生成

推送:

服务器给客户端发送消息

开发者通过第三方推送服务提供商将信息直接下发给需要的设备,第三方推送服务提供商与设备建立一条长连接通道,并且将消息路由到APP中。

3cdd52626a1b?from=singlemessage

推送

推送实现的方式

**(1)长连接: ** 客户端主动和服务器建立TCP长连接之后, 客户端定期向服务器发送心跳包, 有消息的时候, 服务器直接通过这个已经建立好的TCP连接通知客户端。

(2)轮询: 客户端定期询问服务器有没有新的消息, 这样服务器不用管客户端的地址是什么, 客户端来问, 直接告诉它就行.轮询间隔太长,实时性太差;轮询间隔太短,资源消耗大。

(3)SMS: 服务器在有新消息时给用户的手机号发一条特殊的短信, 客户端拦截短信后发现是正常短信就放行, 如果是特殊短信就连接服务器取消息。

心跳包

作用:其实主要是为了防止NAT超时。其次是探测连接是否断开。

心跳包和轮询的区别

心跳包和轮询看起来类似, 都是客户端主动联系服务器, 但是区别很大:

(1)轮询是为了获取数据, 而心跳是为了保活TCP连接。

(2)轮询得越频繁, 获取数据就越及时, 心跳的频繁与否和数据是否及时没有直接关系

(3)轮询比心跳能耗更高, 因为一次轮询需要经过TCP三次握手, 四次挥手, 单次心跳不需要建立和拆除TCP连接。

NAT耗时

国内移动无线网络运营商在链路上一段时间内没有数据通讯后, 会淘汰NAT表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值