多端数据实时同步,LiveQuery 轻松搞定

LiveQuery,这个众盼已久的神奇功能终于来了!简单来说,它会在云端数据发生变化时马上通知所有客户端来同步数据,从而改变了以往只能由客户端按需向云端请求或通过定时轮询来刷新数据的单向模式。这种可实时观察数据变化的特性,对于游戏、多端同步或消息系统会非常有用。

从名字上看,大家不难猜出 LiveQuery 跟 LeanCloud 的数据查询 Query 会有一些渊源。的确如此。LiveQuery 在 Query 之上增加了简明的 API 接口,开发者还是像往常那样先构造一个 Query,写好查询条件,然后订阅(subscribe)这个查询即可。这样当云端数据改变时,如果这些更改与 LiveQuery 所指定的查询条件相匹配,那么 LiveQuery 就会发布这些更改,通知客户端来处理。

目前,Android SDK v4.2.0、JavaScript SDK v3.0.0 和 iOS SDK v5.0.0 已支持 LiveQuery。

下面用 JavaScript 简要演示一下 LiveQuery 的用法。

首先,创建一个对英语书籍的查询:

var query = new AV.Query('Book');
query.equalTo('language', 'english');

订阅 query 以获取一个 LiveQuery 对象 liveQuery,令其监听 create 事件:

query.subscribe().then(function(liveQuery) {
  liveQuery.on('create', function(newBook) {
    console.log(newBook.get('title'));
  });
});

接着,如果有人创建了一个新的 Book 对象,其数据如下:

{
    'className': 'Book',
    'title':     'Teach Yourself English in 21 Days',
    'language':  ['english']
}

由于 LiveQuery 能匹配这个对象,它将捕捉到一个 create 事件,注册的回调将被调用,并打印出这本书的标题。

LiveQuery 支持 create、update、delete、enter、leave、login 等事件,具体说明请阅读 LiveQuery 开发指南

我们也准备好了微信小程序与网页应用,让大家快速体验到手机与网页即时同步数据的效果。

  1. 首先打开微信扫码,添加小程序「LeanTodo」。
  2. 进入 LeanTodo,点击首页左下角「设置」,然后选择「账户设置」,更新为便于记忆的用户名和密码。
  3. 访问 https://leancloud.github.io/leantodo-vue/,输入刚刚在小程序中更新好的账户信息,点击「Login」。
  4. 随意添加更改数据,查看同步状态。

欢迎大家免费试用 LiveQuery,并通过 GitHub 或 support@leancloud.rocks 提交反馈与疑问。

发表评论

电子邮件地址不会被公开。 必填项已用*标注