关于云开发新服务“实时数据推送”,你需要了解的全在这了!

“微信小程序工程师邓坤力带你了解如何利用千呼万唤始出来的云开发实时数据推送服务打造生动的小程序和小游戏!”

在数据库在小程序·云开发中的应用一文中,我们了解到实时数据推送作为云开发即将上线的一项新能力,主要指客户端使用官方SDK发起socket连接建立对一个集合的监听,目标集合中如果有符合过滤条件的数据发生变更,将会直接推送到建立监听的客户端。

1649686-20190828114045222-1769817134.jpg

简单来说,使用实时数据推送可以更有效率的拉取数据,帮你把你的应用变成实时有状态,场景会非常有用,比如可以用来做弹幕,做实时排名更新,做实时刷新,或者实时推送一些通知给到用户。

那么,实时数据推送具体是如何为小程序与小游戏赋能,提升开发效率的?让我们跟随微信小程序工程师邓坤力一起,深入了解这项新服务诞生的来龙去脉。

为什么要做实时数据推送?

介绍实时数据推送服务之前,弄懂一个直击灵魂问题将有助于我们的理解,那就是“为什么要做实时数据推送?”

想要更回答这个问题,需要从即时通信服务说起。

1649686-20190828114113588-1220726457.jpg

我们都知道建立一个简单、常规的即时通信服务需要长连作为实现实时性的基础,需要足够的存储来保证消息与文件的持久化,还需要实时推送功能来实现主动同步客户端的能力。在此过程中,开发者往往需要面临:

(1)需从零自建完整服务,无法聚焦在原型和核心业务开发上。

(2)开发成本高。由于前后端逻辑复杂,开发者往往需要经历设计基础设施搭建,长连管理、数据库开发、安全管理等琐碎繁杂的步骤。

(3)维护成本高。开发者还需负责维护,完成基础设施管理、异常处理等。

(4)微信能力集成。自建服务器的开发者如要基于微信用户登录态进行操作并让小程序安全运行,就不可避免地需要接入微信鉴权体系,整合accesstoken和 sessionkey流程并保证其安全性。

看到这里,可能有很多读者已经想到了具有开箱即用、集成原生微信能力、自带云数据库、云函数、云存储的云开发,那么云开发的这些优势能否有效解决开发者在建立即时通信服务中常常会遇到的难题呢?

答案是不完全能,由于云开发不支持长连,并且不具备主动同步客户端的能力,因此只能通过短轮询以次级长连和推送的次级替代方案,在即时通讯服务构建时往往需要面临短轮询带来的资源浪费、成本与体验难平衡以及实时性差等问题。

1649686-20190828114135772-208240303.jpg

可能又有小伙伴要问了,让云开发支持长连不就可以弥补这些缺陷?答案也是否定的,因为若云开发支持长连,整个即时通讯服务的实现仍避免不了对长连的开发和管理,并且需要接受和处理消息,导致流程仍较为复杂,而这恰恰有悖于云开发作为高效率、轻量级解决方案的理念。

由此,云开发的实时推送服务应运而生,它将即时通讯服务所需的能力与云开发独有的优势串联起来,让开发者可以更便捷地使用并快速实现需求。

1649686-20190828114159410-845238997.jpg

实时数据推送有哪些能力?

能力概述

实时数据推送是云开发数据库新增的服务,通过这项服务,小程序端可实时监听数据库变更,即它支持根据开发者给定的查询语句进行监听,每当查询语句的结果发生变化时,小程序端就会收到包含更新内容的推送,并对实时数据变化做出响应。

总体来说,使用云开发的实时数据推送能力相比起自建服务可以享受以下便利,从而使其更专注于业务逻辑的设计:

  • 原生能力,开箱即用
  • 无需管理长连
  • 无需编写服务端代码
  • 无需搭建和管理基础设施

  • 自动收到更新推送

丰富的应用场景

实时数据推送的应用场景十分丰富。

在即时通信方面,实时数据推送支持小程序直播聊天室、弹幕等以及小游戏的区服聊天、房间聊天、私信等功能的实现。

在状态同步方面,小程序可以使用实时数据推送来保持应用最新状态的同步,以信息流为例,可以支持实时提示有新的文章、评论、点赞,从而达到更好的用户体验;对小游戏来说,可以支持使用状态同步的模型开发的小游戏,比如棋牌类小游戏。

而在实时协作方面,实时数据推送可以为在线共享文档、项目管理协作工具等提供支持。

1649686-20190828114219151-34248109.png

简单易用的API

实时数据推送提供简洁易用的API,调用方便,并且可以完整描述整个维度的数据变化,以便开发者对具体业务逻辑做出响应。

1649686-20190828114300931-736289919.jpg

自动处理异常

SDK在异常时会尽可能自动恢复状态,并且此恢复为开发者无感知,开发者仅需处理 SDK 无法自动恢复的错误。具体来说:

实时数据推送在断网、网络切换、NAT 地址刷新等情况时均能自动检测异常和恢复连接,并且在更新事件推送失败或丢失时有机制保障会成功拉取,而在更新事件乱序时有机制保障开发者收到的是顺序事件。

1649686-20190828114344113-1241519911.jpg

云开发新能力矩阵

  • 云调用:云函数免鉴权调用微信服务端开放接口,获取微信开放数据,接收微信服务端消息推送。
  • HTTP API:小程序外访问云开发资源。
  • 数据库聚合:分组查询、统计查询、流水线批处理。
  • 控制台数据库高级查询:控制台中批量数据库增删查改。
  • 云开发Network面板:小程序Network面板支持展示云开发请求。
  • 实时数据推送

如果你有关于使用云开发CloudBase相关的技术故事/技术实战经验想要跟大家分享,欢迎留言联系我们哦~比心!
1649686-20190828114525265-581753118.png

转载于:https://www.cnblogs.com/CloudBase/p/11423112.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MFC窗体“抽筋”

碰到的这个问题不知道用怎样的词去表达。能反映在屏幕上的就是MFC的窗体不能正常的进入,双击图标后,窗体死在那边,进而程序挂掉。在挂掉之前,窗体是不停的闪烁,就像抽筋一样。 产生问题的背景和条件: 1&…

java实现二分查找-两种方式

转:https://blog.csdn.net/maoyuanming0806/article/details/78176957 二分查找是一种查询效率非常高的查找算法。又称折半查找。 起初在数据结构中学习递归时实现二分查找,实际上不用递归也可以实现,毕竟递归是需要开辟额外的空间的来辅助查询。本文就…

shiro学习(20): 自定义过滤规则

工具idea 先看看数据库 shiro_role_permission 数据 shiro_user shiro_user_role 数据 目录结构 在pom.xml里面添加 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http…

css 一些 常用布局

div骨架 Code<div id"header">ss</div> <div id"container"> <div id"content">ss</div> <div id"side">ss</div> </div> <div id"pagefooter"…

BUUOJ reverse SimpleRev (爆破)

SimpleRev SimpleRev(flag需加上flag{}再提交) 注意&#xff1a;得到的 flag 请包上 flag{} 提交 拖到ida 找到关键函数&#xff1a; unsigned __int64 Decry() {char v1; // [rspFh] [rbp-51h]int v2; // [rsp10h] [rbp-50h]int v3; // [rsp14h] [rbp-4Ch]int i; // [rsp18h] …

抽象类和接口的对比

转:http://www.importnew.com/12399.html 参数抽象类接口默认的方法实现它可以有默认的方法实现接口完全是抽象的。它根本不存在方法的实现实现子类使用extends关键字来继承抽象类。如果子类不是抽象类的话&#xff0c;它需要提供抽象类中所有声明的方法的实现。子类使用关键字…

shiro学习(21):动态添加验证规则1

工具idea 先看看数据库 shiro_role_permission 数据 shiro_user shiro_user_role 数据 目录结构 在pom.xml里面添加 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http…

SCOPE_IDENTITY和@@identity的区别

SCOPE_IDENTITY、IDENT_CURRENT 和 IDENTITY 是相似的函数&#xff0c;因为它们都返回插入到标识列中的值。 IDENT_CURRENT 不受作用域和会话的限制&#xff0c;而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。调用它时必须提供表示表名的字符…

HDU 1203 I NEED A OFFER! (动态规划、01背包、概率)

I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 40874 Accepted Submission(s): 16228 Problem Description Speakless很早就想出国&#xff0c;现在他已经考完了所有需要的考试&#xff0c;准…

索引原理及项目中如何使用索引实例分析

一.索引原理&#xff1a; 为认识索引工作原理&#xff0c;首先有必要对数据表的基本结构作一次全面的复习。 当一个新表被创建之时&#xff0c;系统将在磁盘中分配一段以8K为单位的连续空间&#xff0c;当字段的值从内存写入磁盘时&#xff0c;就在这一既定空间随机保存&#x…

shiro学习(22):动态添加验证规则2

工具idea 先看看数据库 shiro_role_permission 数据 shiro_user shiro_user_role 数据 目录结构 在pom.xml里面添加 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http…

HDU 1231 最大连续子序列 (动态规划)

最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 43843 Accepted Submission(s): 20002 Problem Description 给定K个整数的序列{ N1, N2, ..., NK }&#xff0c;其任意连续子序列可表示为{ Ni, …

shiro学习(23):动态添加验证规则3

工具idea 先看看数据库 shiro_role_permission 数据 shiro_user shiro_user_role 数据 目录结构 在pom.xml里面添加 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http…

借助实时数据推送快速制作在线对战五子棋小游戏丨实战

1 项目概述 游戏开发&#xff0c;尤其是微信小游戏开发&#xff0c;是最近几年比较热门的话题。 本次「云开发」公开课&#xff0c;将通过实战「在线对战五子棋」&#xff0c;一步步带领大家&#xff0c;在不借助后端的情况下&#xff0c;利用「小程序 ✖ 云开发」&#xff0c;…

关于时间复杂度和空间复杂度的计算

转:https://blog.csdn.net/mr_garfield__/article/details/78762478 时间复杂度&#xff1a; 一般情况下&#xff0c;算法中基本操作重复的次数就是问题规模n的某个函数f&#xff08;n&#xff09;&#xff0c;进而分析f&#xff08;n&#xff09;随n的变化情况并确定T&#…

glomosim仿真的运行过程

1 glomosim系统启动的入口是.\main\driver.pc文件中的main()函数。main()函数首先调用parsec_main()函数。parsec_main()函数是parsec运行库函数&#xff0c;我们看不到它的源代码。 2 parsec系统的入口是driver实体。parsec系统启动时首先执行driver实体的代码。driver实体首先…

shiro学习(24):Spring的transaction-manager的用法

<?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:tx"http://www.springframework.org/sche…

Spring Boot----SpringBoot整合 Dubbo 和 Zookeeper

下载安装Zookeeper linux 使用docker部署 windows:参考&#xff08;https://blog.csdn.net/ring300/article/details/80446918&#xff09;&#xff0c;下载的zookeeper目录中需要包含lib&#xff08;内置jar包&#xff0c;否则需要自己导入&#xff09; 1、将conf目录下的zoo_…

visual studio 2005 sp1 安装错误解决

要解决此问题, 请按照下列步骤&#xff1a; 1. 单击 开始 单击 运行 &#xff0c; 键入 控件 secpol.msc , 然后单击 确定 。 2. 双击 本地安全策略 。 3. 单击 软件限制策略 。 注意 如果列出, 没有软件限制右键单击 软件限制策略 , 然后单击 新建策略 。 4. 在 对象类…

递归树求解递归算法的时间复杂度

递归算法时间复杂度的计算方程式一个递归方程&#xff1a; 在引入递归树之前可以考虑一个例子&#xff1a; T(n) 2T(n/2) n2 迭代2次可以得&#xff1a; T(n) n2 2(2T(n/4) (n/2) 2) 还可以继续迭代&#xff0c;将其完全展开可得&#xff1a; T(n) n2 2((n/2) 2 2((n/2…