当前位置: 首页 > 后端技术 > Node.js

关于全新的云开发服务“实时数据推送”,你想知道的都在这里!

时间:2023-04-03 12:07:17 Node.js

《微信小程序工程师邓昆利将带你使用已经存在已久的云开发实时数据推送服务,制作生动的小程序和游戏!》,我们了解到实时数据推送是一项即将上线的云开发新能力。主要是指客户端使用官方SDK发起socket连接建立一个集合的监听。如果满足过滤条件的目标集合有变化,则直接Push给建立监听器的客户端。简单来说,使用实时数据推送可以更高效的拉取数据,帮助你让你的应用成为实时状态。这个场景会很有用,比如可以用来做弹幕,实时排名更新,实时刷新,或者实时推送一些通知给用户。那么,实时数据推送如何具体赋能小程序和游戏,提升开发效率呢?让我们跟随微信小程序工程师邓昆利,一起来了解一下这项新服务诞生的来龙去脉。为什么要推送实时数据?在介绍实时数据推送服务之前,先帮助我们理解一个直击灵魂的问题,即“为什么我们需要实时数据推送?”为了更好地回答这个问题,我们需要从即时通讯服务说起。我们都知道,建立一个简单、定时的即时通讯服务,需要长期连接作为实时性能的基础,足够的存储来保证消息和文件的持久化,实时推送功能来实现主动同步的能力客户。在这个过程中,开发者往往需要面对:(1)需要从头构建一个完整的服务,无法专注于原型和核心业务的开发。(2)开发成本高。由于前后端逻辑复杂,开发者往往需要经历设计基础架构搭建、长线连接管理、数据库开发、安全管理等琐碎复杂的步骤。(3)维护成本高。开发者还负责维护、基础设施管理、异常处理等。(4)微信能力集成。自建服务器的开发者如果想要基于微信用户登录状态进行操作,让小程序安全运行,必然需要接入微信认证系统,集成accesstoken和sessionkey流程,保证其安全性。看到这里,很多读者可能已经想到开箱即用的云开发,集成微信原生能力,内置云数据库、云函数、云存储。云开发的这些优势能否有效解决开发者在构建即时通讯服务时经常遇到的问题呢?答案不完全可以,因为云开发不支持长连接,不具备客户端主动同步的能力,所以只能使用短轮询作为长连接和推送的次要替代方案,即在构建即时通讯服务时经常需要面对短轮询带来的资源浪费、成本和体验难以平衡、实时性差等问题。可能有朋友又要问了,云开发支持长连接能弥补这些不足吗?答案也是否定的,因为如果云开发支持长连,那么整个即时通讯服务的实现还是无法避免长连的开发和管理,需要接收和处理消息,导致相对复杂process,这与cloud的概念完全相反,被开发为一种高效、轻量级的解决方案。于是,云开发的实时推送服务应运而生。它将即时通讯服务所需的能力与云开发的独特优势结合起来,让开发者使用起来更方便,更快速地实现自己的需求。实时数据推送有哪些能力?能力概述实时数据推送是云开发数据库的一项新服务。通过该服务,小程序可以实时监控数据库的变化,即支持根据开发者给出的查询语句进行监控。每当查询语句的结果发生变化时,小程序端会收到包含更新内容的推送,并响应实时数据变化。总的来说,使用云端开发的实时数据推送能力,与自建服务相比,可以享受到以下便利,从而更专注于业务逻辑的设计:原生能力,开箱即用,无需管理长期连接,无需编写服务器端代码,无需构建和管理基础设施即可自动接收更新并推送丰富的应用场景。实时数据推送的应用场景有很多。在即时通讯方面,实时数据推送支持实现小程序直播聊天室、弹幕等,以及区域服务器聊天、房间聊天、小游戏私信。在状态同步方面,小程序可以通过实时数据推送,保持应用的最新状态同步。以信息流为例,可以支持新文章、评论、点赞的实时通知,从而达到更好的用户体验;对于游戏,可以支持使用状态同步模型开发的小游戏,比如棋牌类游戏。在实时协作方面,实时数据推送可以为在线共享文档、项目管理协作工具等提供支持。简单易用的API实时数据推送提供了一个简单易用的API,调用方便,能够完整描述整个维度的数据变化,方便开发者响应具体的业务逻辑。异常自动处理SDK会在异常发生时尽可能自动恢复状态,而这种恢复是开发者不知情的,开发者只需要处理SDK无法自动恢复的错误即可。具体来说:实时数据推送可以在网络断开、网络切换、NAT地址刷新等情况下自动检测异常并恢复连接,并且有机制保证更新事件推送失败时会成功拉取或丢失。有一种机制可以确保开发人员在顺序事件发生故障时接收顺序事件。云开发新能力矩阵云调用:云函数无需认证调用微信服务器开放接口,获取微信开放数据,接收微信服务器消息推送。HTTPAPI:访问小程序外的云开发资源。数据库聚合:分组查询、统计查询、流水线批处理。高级控制台数据库查询:在控制台批量增删改查数据库。云开发网络面板:小程序网络面板支持显示云开发请求。实时数据推送如果你有使用云开发CloudBase相关的技术故事/技术实践经验想分享给大家,欢迎留言联系我们~比心!