当即时消息登录移动终端时,如何通过提取数据来节省流量?
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-提供企业即时通讯IM开发-语音通话-APP搭建私有化-公有云-私有化云-海外云搭建
联系我们 - 哇谷IM-即时通讯IM私有化搭建提供接口与SDK及哇谷云服务
公有云和私有云之间有什么区别?类似融云、环信云、网易云、哇谷云?