文档章节

使用Bmob SDK实时数据功能的一次经历

 啥都别说了
发布于 2015/06/04 16:07
字数 842
阅读 44
收藏 2

需求

使用Bmob iOS SDK中的数据实时功能(http://docs.bmob.cn/ios/developdoc/index.html?menukey=develop_doc&...)完成以下功能:

  1. 用户可以随意发布帖子;

  2. 这个用户的关注者可以立即接收到这个发布的帖子信息。

其中第一个需求是很容易实现的,关键是第二个需求,需要用到数据实时功能去监听当前登录用户关注的作者是否发送新帖子。

解决方案

  • 方案1

接到这个需求,很容易就想到以下方案,我称之为表监听方案,原理如下:

表监听方案
设计的表如下:
记录用户信息的表
user(username,password,attention_authors) 其中attention_authors为用户的关注者列表

记录帖子信息的表
post(title,content,author)

监听过程:

  1. 用户登录

  2. 监听post表,每次有更新时,则遍历当前登录用户的关注人列表,判断最新添加的帖子的作者是否在该列表中,如果存在则推送该帖子给当前登录用户,否则,不作处理。

我们可以看出,该方案中,只要一但出现有新帖子产生,那么该应用的所有用户都会接收到新帖子的信息,只是根据当前用户是否有关注该帖子的作者来决定是否显示,那么假如应用的用户量一大,每天的新帖子数很多时,那么每一个用户每天接受这些帖子就需要消耗大量的流量,而显然,这些流量中的信息绝大一部分是对用户无用的。因此,我们需要改变一下监听策略。

  • 方案2

行监听方案,原理如下:

设计两张表:
user(username,password,attention_authors,last_post)
attention_authors 用户关注的作者的objectId列表,该字段为Array类型
last_post用户发的最后一篇帖子的objectId

post(title,content,author)

整个逻辑分为两个方面 :

1.发post

  • 更新post表,添加一条数据,并读取其objectId

  • 更新user表对应author==userName的记录,将1)中last_post置为objectId

2.收post

  • 网络读取attention_authors字段,监听User表中的objectId中对应的所有行

  • 当监听的行有更新时,读取lastID

  • 利用lastID查找post表对应的行,读取这些行信息并且主动发现给当前登录用户

对比方案1,该方案最大的优点在于,只有当前登录用户关注的作者发表新帖子时,用户才会收到更新推送,确保接收的信息对于用户而言都是有用的。

总结
在移动客户端的开发过程中,在设计完方案后,还需要考虑网络的交互,由于目前的移动网络流量还是比较昂贵的,因此,要尽可能地减少网络数据交互。由于现在有新的任务,目前只实现了使用行更新的方案,有兴趣的朋友可以尝试实现表监听方案来对比一下,如果后面时间充裕的话我也会将这两种方案进行更加深入的对比。

代码下载猛击这里

更多学习怒击这里

© 著作权归作者所有

上一篇: 网络爬虫
粉丝 1
博文 4
码字总数 1498
作品 0
广州
私信 提问
超简单的实现群聊的方法

开发这么久发现,很多第三方平台并不直接提供支持群聊的功能,尝试了好几种方法,最后找到一种比较方便直接的,现在与大家共享! 采用的方法是bmob提供的数据实时同步功能,来实现群聊(一群...

小小琪
2015/08/24
2.5K
3
Bmob用户功能详解(一)

在开发应用程序的时候,很多情况下我们需要进行用户注册、登录、修改密码等等一系列和用户相关的功能。 那么要实现这些功能比较普遍的做法是,有一个服务器端,包括数据库设计、服务器部署、...

2013020735
2017/01/04
573
0
我是如何从零开始写出一个微信小程序的

很多人看完bmob快速入门,并完成了简单的基本配置之后依然不知道如何下手去写自己的代码,那么跟着我一起来一步一步做一个小程序吧。(工具:bmob后端云) 新建小程序项目 一、新建项目选择小...

大王12
2017/12/08
0
0
快速开发之-用Bmob实现APP用户功能(二)

上一篇文章中我介绍了怎么使用BmobSDK进行简单的用户注册、登录操作。 文中我们是使用BmobSDK默认的BmobUser类来设置用户名、密码注册登录的。这是一种非常简单的用户对象,只包含了用户名和...

大王12
2017/03/30
0
0
Bmob用户功能详解(二)

扩展用户 上一篇文章中我介绍了怎么使用BmobSDK进行简单的用户注册、登录操作。 文中我们是使用BmobSDK默认的BmobUser类来设置用户名、密码注册登录的。这是一种非常简单的用户对象,只包含了...

2013020735
2017/01/11
362
0

没有更多内容

加载失败,请刷新页面

加载更多

优雅的关闭Spring Boot

优雅的关闭Spring Boot 1、实现 TomcatConnectorCustomizer 接口拿到Tomcat的连接获取 Tomcat连接池 2、实现 ApplicationListener<ContextClosedEvent> 监听服务器关闭事件,注册JVM钩子函数...

sowhat
今天
2
0
Python3-Web开发

简介 Web开发框架 什么是Web框架? Web应用程序框架或简单的Web框架表示一组库和模块,使Web应用程序开发人员能够编写应用程序,而不必担心协议,线程管理等低级细节。 virtualenv是一个虚拟...

wuxinshui
今天
3
0
使用技媒体实践编写发布博客

技媒体实践博客 CSDN OSChina 知乎 简书 思否 掘金 51CTO

晨猫
今天
2
0
Lucene

1、什么是全文检索 数据分类 我们生活中的数据总体分为两种:结构化数据和非结构化数据。 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据:指不定长或无固...

榴莲黑芝麻糊
昨天
5
0
python到setuptools、pip工具的安装

python安装 基础开发库   apt-get install gcc  apt-get install openssl libssl-dev 安装数据库和开发库   apt-get install mysql-server libmysqld-dev python环境   下载地址...

问题终结者
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部