移动 IM 开发之心跳​

本文探讨了为何在应用层实施心跳机制的必要性,尽管TCP是可靠的连接,但依赖TCP的KeepAlive可能不够实时。介绍了如何通过动态调整心跳间隔以及采用错误积累策略来平衡耗电和连接可靠性。此外,还提到了一些优化技巧,如根据指令包计时心跳,以减少不必要的心跳次数。
摘要由CSDN通过智能技术生成
什么是心跳?
在使用 TCP 长连接的 IM 服务设计中,往往都会涉及到心跳。心跳一般是指某端(绝大多数情况下是客户端)每隔一定时间向对端发送自定义指令,以判断双方是否存活,因其按照一定间隔发送,类似于心跳,故被称为心跳指令。



为什么要在应用层做心跳

那么问题就随之而来了:为什么需要在应用层做心跳,难道 TCP 不是个可靠连接吗?我们不能够依赖 TCP 做断线检测吗?比如使用 TCP 的 KeepAlive 机制来实现。应用层心跳是目前的最佳实践吗?怎么样的心跳才是最佳实践。

好吧,是不是以前从来没有仔细考虑过这些问题,仅仅只是个简单的心跳而已啊!(一脸懵逼)
对于客户端而言,使用 TCP 长连接来实现业务的最大驱动力在于:在当前连接可用的情况下,每一次请求都只是简单的数据发送和接受,免去了 DNS 解析,连接建立等时间,大大加快了请求的速度,同时也有利于接受服务器的实时消息。
但前提是连接可用。如果连接无法很好地保持,每次请求就会变成撞大运:运气好,通过长连接发送请求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值