心跳机制

说实话, 编程世界中有很多的名词,真的非常有意思,比如心跳机制,比如充血模式。

转入正题:

什么是心跳机制, 

我们首先来讲个例子,有的时候,女朋友去一个漆黑的厕所,或者去一个漆黑的胡同。你在外边守着。这时候他在里边害怕,就会每过一段时间来喊一下你的名字,来让她心里有安全感。让他觉得你就在跟前。

心跳机制就是这样的啦,对于两个点对点的连接。当我们没有采用类似tcp 这样安全的连接时,发送消息时,往往无法判断对方是否接收到了我们的信息。比如电话号码信号不好的时候,经常会在声音断断续续的时候,说喂喂喂 能听到吗,这其实上就是建立了一种心理上的连接。让你知道电话没有断线对方还在接听。而对于其他无法判断声音断断续续的时候,我们就需要后台定时的发送一些信息包过去,告诉对方,我在跟前,你不要怕,请继续说。而对方也在不断的发类似的包过来。这样双方就会在即使没有tcp这样安全的连接下,依然可以有效的判断信息是否安全的传送到对方的手里。

这就有点像心跳的样子,每过一段时间(一般是几秒钟),就发送一个信息包过去,对方的后台软件接收到你的信息之后,就会知道你还保持在线,这样你就会显示隐身的状态。这一点是不是很像QQ这类的IM啊。其实QQ在端点之间的信息传送就是通过udp,与此同时采用tcp 和服务器连接,接收一些通知消息。否则如果所有的通话都是建立在安全的连接下的话,性能上显然无法满足。所以你会经常发现,你发送的一句话,过来很久qq 提示你,信息发送超时,其实上这是后台的补偿机制在没有接收到对方的消息时,继续发送多次后的提示。而有时候即使你看到了信息发送超时,结果对面却仍然看到了信息,这就是因为双方的安全校验机制发送出现了问题。


除了校验网络是否安全之外,心跳机制也可以用于定时的检查是否有跟新信息,是否缓存数据发生了改变。设计思路都是一个意思啦


你可能感兴趣的:(心跳机制)