文档中心>云开发 CloudBase

实时推送

最近更新时间:2025-06-13 11:49:01

我的收藏
云开发数据库支持监听集合中符合查询条件的数据的更新事件。

建立监听

使用 watch() 方法即可建立监听,并且返回 watcher 对象,用于关闭监听。
符合条件的文档有任何变化,都会触发 onChange 回调。
Web
小程序
const cloudbase = require("@cloudbase/js-sdk");

const app = cloudbase.init({
env: "xxxx"
});
// 1. 获取数据库引用
var db = app.database();

const watcher = db
.collection("todos")
.where({
// query...
})
.watch({
onChange: function (snapshot) {
console.log("snapshot", snapshot);
},
onError: function (err) {
console.error("the watch closed because of error", err);
}
});

// 1. 获取数据库引用
const db = wx.cloud.database();

const watcher = db
.collection("todos")
.where({
// query...
})
.watch({
onChange: function (snapshot) {
console.log("snapshot", snapshot);
},
onError: function (err) {
console.error("the watch closed because of error", err);
}
});


关闭监听

调用 watcher.close() 即可关闭监听。
Web
小程序
watcher.close();

watcher.close();

说明:
适用场景(实时推送适用于广播场景,同时具有连接数限制,对于高并发单播场景不建议使用):
单播场景:不同用户 watch 的 where 条件均不同。
广播场景:所有用户 watch 的 where 条件均相同。
系统限制:
监听记录数限制。
一次监听的记录数上限为5000,若超出上限会抛错并停止监听。监听过大量的数据时初始化会较慢,对监听效率也有影响,如果预期监听发起时少于5000,但后续有可能超过5000,请注意在即将超过时重新监听并保证不超过5000。
最大连接数限制。
从2025年6月30日起,实时推送的最大连接数限制跟随套餐,具体限制数值可以查看 套餐及价格文档;如有更大连接数上限需求的活动,请至少提前30天 联系我们
注意集合权限设置。
集合的读权限设置在实时数据推送里同样生效,如果权限是设置为仅可读用户自己的数据,则监听的时候无法监听到非用户自己创建的数据。