当即时消息登录移动终端时,如何通过提取数据来节省流量?

 1.前言

 

 在移动网络时代,手机流量是非常昂贵的资源(至少暂时如此)。登录后,典型的移动即时消息通常需要与服务器同步大量数据。如果处理不好,将会耗费大量的交通。从技术上讲,有没有什么方法可以节省交通?这是本文要讨论的主题。

 2.即时通讯开发干货系列文章

 

 本文是系列文章中的第七篇,主要内容如下:

 

 即时消息传递保证机制的实现(一):保证在线实时消息的可靠传递

 即时消息传递保证机制的实现(二):保证离线消息的可靠传递

 如何确保即时消息的“时间”和“一致性”?》

 我应该使用“推”还是“拉”来同步即时消息单聊和群聊的在线状态?》

 即时消息群聊新闻如此复杂,如何确保它不丢失或沉重?》

 安卓即时通讯智能心跳算法的设计与实现探讨(含示例代码)

 "当即时消息登录移动终端时,如何通过提取数据来节省流量?"(本文)

 易于理解:基于集群共享移动终端即时通信接入层的负载均衡方案

 浅谈移动即时通信的多点登录和消息漫游原理

 构成即时通讯开发的基础知识(一):正确理解前端HTTP单点登录接口的原理

 构成即时消息开发的基础知识(2):如何为大量图像文件设计服务器端存储架构?》

 补充即时通讯开发的基础知识(3):快速了解服务器端数据库读写分离的原理和实用建议

 构成即时消息开发的基础知识(4):正确理解短连接中的Cookie、会话和令牌

 如何实现即时通讯群聊信息的阅读回执功能?》

 即时消息群聊消息是一份拷贝(即扩散阅读)还是多份拷贝(即扩散写作)?》

 构成即时消息开发的基础知识(5):易于理解、正确理解并充分利用MQ消息队列

 一种低成本保证即时消息定时的方法探讨

 补上一课关于即时消息开发的基础知识(6):您的数据库使用NoSQL还是SQL?读读这个!》

 在即时通讯中实现“身边人”功能的原则是什么?如何有效地实现它?》

 构成即时通讯开发的基础知识(七):主流移动账户登录方法的原理和设计思路

 弥补即时通讯发展的基础知识(8):历史上最流行的,彻底了解字符乱码问题的本质

 如何实现即时通讯的扫描码板功能?有一篇文章了解主流应用的扫描代码登陆技术的原理

 “即时通讯做手机扫描码登录?让我们先来看看微信扫描码登录功能的技术原理

 构成即时通讯发展的基础知识(9):想发展即时通讯集群吗?首先了解什么是RPC!》

 

 此外,如果你是即时通讯开发的初学者,强烈建议你先阅读“初学者:从零开始开发移动即时通讯”。

 3.当移动即时消息登录时,应该提取哪些数据?

 

 当移动终端即时消息登录时,通常需要提取两种类型的数据,一种是“身份列表数据”,另一种是“信息细节数据”。

 

 以微信为例,你需要拉动:

 

 1)好友列表,即所有好友的id(id+姓名);

 2)组列表,即所有参与组的标识(标识+名称);

 3)群组好友列表映射,所有群组好友的id(id+姓名);

 4)好友详细信息地图,所有好友的详细信息(昵称、笔记、标签、地区、相册等)。);

 5)群组详细信息地图,所有群组的详细信息(二维码、公告、请勿打扰等)。);

 6)群组好友详细信息地图,所有群组好友的详细信息(昵称、备注、标签、地区、相册等)。);

 7)其他,如离线消息…

 

 4.你能在登录后而不是登录时提取这些数据吗?

 

 如果你登录时没有拉它,登录后,刷你的朋友名单和小组名单,小组成员将会很慢。

 

 如果你在登录时拉它,登录过程可能会很慢(微信的“大月亮背景”需要多长时间)?要等30秒才能登录QQ?).

 

 通常,为了保证登录后的体验,一般在登录时会被拉出来。

 5.您能直接重用客户端的本地数据吗?

 

 原则上,客户端的本地数据不能直接重用,因为本地数据不能保证是最新的。

 

 但是每次你登录的时候,你都需要把它拉出来,这就造成了太多的流量。有什么优化方法吗?

 

 有两种常用的优化方法:

 

 1)延迟拉动,按需拉动;

 2)时间戳。

 

 6.为什么延迟拉动和按需拉动有效?为什么我们能减少拉力流?

 

 在移动终端上使用即时消息的过程中,肯定会使用一些数据,而不一定会使用一些数据。对于将要使用的数据,登录时提取可以改善后续的用户体验。对于可能不使用的数据,登录时可能会浪费流量。如果这些数据被“延迟”,它可以节省流量。

 7.哪些数据在未登录后不会被使用,可以在以后提取?

 

 这个问题的答案与业务密切相关。以微信为例:

 

 必须使用的数据:朋友列表(用户名应显示在主页上)和组列表(组名应显示在主界面上)。

 不能使用的数据:朋友详细信息、群详细信息、群朋友列表、群朋友详细信息。

 

 因此,对于微信来说,登录时只需要拉取好友列表(id+姓名)和群组列表(id+姓名),当用户实际点击使用时,可以拉取其他数据,大大减少了拉取流量。

 8.为什么时间戳有效?为什么我们能减少拉力流?

 

 本地数据不能被直接使用的原因是不确定数据是否是最新的,所以服务器时间戳被提取并与本地时间戳进行比较。如果本地数据是最新的,可以避免重新提取。id列表数据的更改频率相对较低(增加id和减少id),时间戳机制非常有效。

 9.添加时间戳机制后,数据提取过程发生了什么变化?

 

 假设有100个朋友。以拉朋友的细节为例。在没有时间戳之前,直接从服务器上获取这100个朋友的详细信息。

 

 获得时间戳后,数据提取过程变为:

 

 1)首先拉出100个朋友的时间戳;

 2)客户端将100个好友的时间戳与本地时间戳进行比较,找出差异,并假设10个好友的信息发生了变化,时间戳也发生了变化;

 3)提取10个已更换朋友的信息。

 

 优点是数据传输量大大减少(从拉100个朋友减少到拉10个朋友);

 缺点是:增加了网络交互(最初的直接拉取,但是现在时间戳和差异数据需要分别拉取)。

 10.我们可以在使用时间戳的同时减少网络交互的数量吗?

 

 答案是:是的!

 

 客户端对时间戳的使用通常以“客户端提取时间戳”+“客户端比较时间戳”+“客户端再次提取差异数据”的方式进行。“时间戳比较”的CPU计算发生在客户端,但事实上,这种计算可以传递给服务器。

 

 具体步骤如下:

 

 1)客户端上传100个朋友的时间戳;

 2)“服务器”接收客户端上传的时间戳,并将其与最新的时间戳进行比较,以找出差异。假设10个朋友的信息已经改变,服务器可以直接返回10个有差异的朋友的数据。

 

 优点:客户端减少一个网络请求;

 缺点是比较时间戳差异的CPU计算从“结束”转移到“云”。


----------------------------------------------------------------------------------

哇谷im_im即时通讯_私有云_公有云-哇谷云科技官网-JM沟通

IM下载体验 - 哇谷IM-企业云办公IM即时聊天社交系统-JM 沟通下载

IM功能与价格 - 哇谷IM-提供即时通讯IM开发-APP搭建私有化-公有云-私有化云-海外云搭建

新闻动态 - 哇谷IM-即时通讯热门动态博客聊天JM沟通APP

哇谷IM-JM沟通热门动态博客短视频娱乐生活

关于哇谷-哇谷IM-提供企业即时通讯IM开发-语音通话-APP搭建私有化-公有云-私有化云-海外云搭建

联系我们 - 哇谷IM-即时通讯IM私有化搭建提供接口与SDK及哇谷云服务

即时通讯IM融云世界

IM即时通讯钉钉技术:企业IM钉钉在后端架构上的优越之处

新的市场叫板环信、融云、腾讯云!开源版IM即使聊天工具

企业IM即时通讯聊天办公APP钉钉技术分析交流

哇谷云-怎么样正确认识海外云服务器

公有云和私有云之间有什么区别?类似融云、环信云、网易云、哇谷云?