美文网首页
IM中客户端应用层心跳包的由来

IM中客户端应用层心跳包的由来

作者: Scott丶Wang | 来源:发表于2018-04-11 22:53 被阅读19次

客户端从服务器获取最新数据(别人有没有给我发消息了)?
两种方式:
1.轮询

客户端定期询问服务器有没有新的消息, 这样服务器不用管客户端的地址是什么, 客户端来问, 直接告诉它就行,这种方案最简单, 对于一些不追求实时性的客户端来说, 很适合, 只需要把时间间隔设定成几个小时取一次, 就能很方便的解决问题.但对于即时通讯产品来说, 这种方案完全不能用. 假设即时通讯软件在网络畅通的情况下发送的消息要求对方10s内就能收到, 如果用轮询, 那么客户端要每隔5s连一次服务器, 如果在移动端, 手机的电量和流量很快就会被消耗殆尽。

2.长连接

这大概是目前情况下最佳的方案了, 客户端主动和服务器建立TCP长连接之后, 客户端定期向服务器发送心跳包, 有消息的时候, 服务器直接通过这个已经建立好的TCP连接通知客户端.

参考资料:
iOS即时通讯进阶 – CoacoaAsyncSocket源码解析
Android端消息推送总结:实现原理、心跳保活、遇到的问题等
新手入门一篇就够:从零开发移动端IM
为什么说基于TCP的移动端IM仍然需要心跳保活?

相关文章

  • IM中客户端应用层心跳包的由来

    客户端从服务器获取最新数据(别人有没有给我发消息了)?两种方式:1.轮询 客户端定期询问服务器有没有新的消息, 这...

  • Socket心跳包机制与实现

    心跳包的发送,通常有两种技术 方法1:应用层自己实现的心跳包 由应用程序自己发送心跳包来检测连接是否正常,大致的方...

  • Socket心跳包机制

    <转自CSDN技术博客>心跳包的发送,通常有两种技术方法1:应用层自己实现的心跳包由应用程序自己发送心跳包来检测连...

  • Netty4 断线重连

    一 、实现心跳检测 原理:当服务端每隔一段时间就会向客户端发送心跳包,客户端收到心跳包后同样也会回一个心跳包给服务...

  • Netty4断线重连

    一 、实现心跳检测 原理:当服务端每隔一段时间就会向客户端发送心跳包,客户端收到心跳包后同样也会回一个心跳包给服务...

  • Netty 4.0 实现心跳检测和断线重连

    一、实现心跳检测 原理:当服务端每隔一段时间就会向客户端发送心跳包,客户端收到心跳包后同样也会回一个心跳包给服务端...

  • 心跳协议设计

    为什么需要应用层心跳?Tcp Keepalive 能不能代替心跳? 保活一个客户端连接服务器以后,如果长期没有和服...

  • netty双向心跳的设计

    心跳包:不带消息体 客户端定时20秒发送心跳包 -> 服务端回应 客户端检查60秒内未读到消息,则认为断线,关闭连...

  • IM序列6:一种Android端IM智能心跳算法的设计与实现探讨

    1、前言 对于IM或实时消息推送技术来说,客户端的心跳算法几乎是必备品,尤其当前复杂的移动网络环境下,网络心跳保活...

  • 如何保持 SSH 服务不掉线

    常见的保持 SSH 服务不掉线的方法有两种: 服务端发送心跳包 客户端发送心跳包 本篇文章将以 Ubuntu 18...

网友评论

      本文标题:IM中客户端应用层心跳包的由来

      本文链接:https://www.haomeiwen.com/subject/lbrtkftx.html