首页/新闻资讯/正文详情

Butterbase KV 存储与 Realtime 实时订阅指南:如何用 WebSocket 快速构建直播 UI

发布时间:2026/9/25 18:21:49 来源:云帆数科 栏目:资讯中心
Butterbase KV 存储与 Realtime 实时订阅指南:如何用 WebSocket 快速构建直播 UI
Butterbase KV 存储与 Realtime 实时订阅指南如何用 WebSocket 快速构建直播 UI【免费下载链接】butterbase-ossOpen-source backend-as-a-service. Postgres, auth, storage, functions, AI gateway, MCP.项目地址: https://gitcode.com/gh_mirrors/bu/butterbase-ossButterbase 的 KV 存储与 Realtime 实时订阅是两款开箱即用的后端能力KV 提供按 Key 快速读写的键值存储会话、计数器、锁、功能开关Realtime 则通过 WebSocket 把数据库表的每次 INSERT / UPDATE / DELETE 实时广播给前端。两者组合起来你就能以极低的成本构建数据一改、界面立变的直播数据 UI无需自己维护消息队列或轮询接口。先搞懂KV 存什么Realtime 管什么很多人分不清这两者的分工一张表说清楚你想做的事该用什么存会话 Token、购物车、向导进度KV自动过期免清理页面浏览量、限流计数KVincr原子自增分布式锁、防重复扣款KVsetnx原子占位功能开关 / A/B 配置改值不发布KV数据库行变化后前端秒级刷新Realtime聊天室、直播评论、多人协作光标Realtime订阅 Presence官方给出的选型建议很直接KV 适合按 Key 访问、会自然过期、不需要关系查询的数据消息队列、pub/sub、流式场景交给 Realtime。完整的场景对照见 kv.md 的 When to use KV 小节。KV 快速上手写入、过期与原子操作在 Serverless 函数里KV 通过ctx.kv直接调用Key 自动按应用隔离不需要手动加前缀。最常见的三类操作// 存一个 1 小时后过期的会话 await ctx.kv.set(session:abc123, { userId: u_1 }, { ttl: 3600 }); // 原子计数器不存在时从 0 开始自增 const views await ctx.kv.incr(counter:page:/home); // 分布式锁Key 不存在才写入成功TTL 就是锁的租约时长 const acquired await ctx.kv.setnx(lock:order:99, ctx.requestId, { ttl: 30 });几个新手常踩的点默认 TTL 是 30 天不传ttl时 Key 会在 30 天后自动过期传{ ttl: null }表示永不过期见 kv.md 的 TTL 小节。默认 Key 都是私有的浏览器/移动端默认读不到 KV必须显式开放。用一行expose即可把某个命名空间开放给前端且支持{user.id}模板让每个用户只访问自己的 Key// 每个用户只能读写自己的 profile别人访问一律 403 await ctx.kv.expose(profile:{user.id}, { read: owner, write: owner });会话、锁、限流、幂等键、功能开关五种高频模式都有可复制的完整配方推荐直接看 kv-recipes.md。不想写代码也可以在终端执行butterbase kv set feature:new-checkout on下一行代码都不用改功能开关即时生效CLI 命令实现在 kv.ts。Realtime 实时订阅三步开启 WebSocket 推送Realtime 的原理是给表装上数据库触发器行变化通过pg_notify广播到 WebSocket 连接数据面迁移见 007_realtime.sql配置表见 022_realtime_config.sql。第 1 步CLI 一键开启butterbase realtime enable messages命令会列出每张表的配置状态之后butterbase realtime config随时可查实现见 realtime.ts。第 2 步前端建立 WebSocket 连接浏览器端把用户 JWT 放在查询参数即可RLS 会限制用户只收到自己有权查看的行const ws new WebSocket(wss://api.butterbase.ai/v1/app_abc123/realtime?token${token}); ws.onopen () { ws.send(JSON.stringify({ type: subscribe, table: messages })); };第 3 步按字段过滤只收你要的变化订阅时可以加filter只有列值完全相等的变化才会推送——比如直播场景里只关注当前频道的评论{ type: subscribe, table: messages, filter: { channel_id: abc } }服务端会持续推送change事件含op、record、old_record、timestamp另有heartbeat保活。协议全貌见 realtime.md。构建直播 UI让数据变化秒级驱动界面如果不想裸写 WebSocket 协议TypeScript SDK 的RealtimeClient已经把连接—订阅—断线重连—心跳检测全部封装好见 realtime-client.ts// 订阅带过滤条件的变化断线后自动重连并重放订阅 bb.realtime.on(messages, { channel_id: abc }, (change) { if (change.op INSERT) addMessageToUI(change.record); });客户端内置指数退避重连最长 30 秒间隔和 45 秒心跳超时检测重连后会自动重新订阅所有表并恢复 Presence 跟踪省去大量样板代码。进阶直播弹幕与多人协作的 PresenceRealtime 除了数据变化广播还内置两条对直播 UI 特别实用的通道Presence 在线状态发送presence_track并附带元数据昵称、光标坐标等服务端会把presence_join/presence_update/presence_leave/presence_state广播给所有跟踪者——协作白板光标、直播间谁在看都靠它协议示例见 realtime.md。注意 Presence 是内存态服务重启会重置。WebSocket 自定义事件给函数绑定websocket触发器后前端发一条{ type: event, event: chat_message, payload: {...} }函数处理完把event_response原路返回——相当于一条低延迟的请求—响应旁路适合弹幕审核、点赞计数这类逻辑。两个新手要留意的限制事件是行级全量推送暂不支持列过滤重连瞬间可能丢事件客户端应在重连后重新拉取一次状态兜底见 realtime.md。相关文件速查内容路径KV 概念与 API 详解services/docs/src/content/docs/core-concepts/kv.mdRealtime 协议与示例services/docs/src/content/docs/core-concepts/realtime.mdKV 可复制配方集services/docs/src/content/docs/guides/kv-recipes.mdCLIrealtime enable/config/disablepackages/cli/src/commands/realtime.tsSDKRealtimeClient 实现packages/sdk/src/realtime/realtime-client.ts数据面 Realtime 迁移db/data-plane/007_realtime.sql一句话总结短期状态找 KV实时推流找 Realtime——先开表、再连 WebSocket、加上 filter 与 Presence一个会动的直播 UI 就完成了。【免费下载链接】butterbase-ossOpen-source backend-as-a-service. Postgres, auth, storage, functions, AI gateway, MCP.项目地址: https://gitcode.com/gh_mirrors/bu/butterbase-oss创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

OpenClaw 2.7.9 对接飞书教程:用 TaoToken 统一 Key 搭建飞书机器人实现远程操控电脑(含安装包)
OpenClaw 2.7.9 对接飞书教程:用 TaoToken 统一 Key 搭建飞书机器人实现远程操控电脑(含安装包)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 18:21:42

SAM
SAM

一句话理解整篇论文:建立一个统一的 segmentation interface,让其他模型、用户以及不同任务都能够调用SAM 的目标是:给模型任意一种 prompt,模型都尽可能输出一个合理的分割 mask;再依靠海量数据和这种promptable训练方… · 2026/9/25 18:21:36

Cisco Packet Tracer安装与汉化全攻略:从下载到中文界面
Cisco Packet Tracer安装与汉化全攻略:从下载到中文界面

如果你在网络工程专业读着书、正在备考CCNA,或者刚摸到思科设备相关的实验需求,那“Cisco Packet Tracer”这个名字大概率躲不掉。这是一款思科官方出品的网络模拟器,专门用来模拟路由器、交换机、PC、服务器这些设备,让你不碰真机… · 2026/9/25 18:21:36

点云预处理与特征计算:任务导向的工业级实践指南
点云预处理与特征计算:任务导向的工业级实践指南

1. 为什么点云预处理不是“清洗一下就完事”的体力活点云数据预处理和特征计算,这两个词在测绘、自动驾驶、工业检测、数字孪生这些领域里天天被提起,但绝大多数人一上手就栽在第一步——误以为它只是“把噪点删掉、把空洞补上、再导出个ply文件”这种标… · 2026/9/25 19:10:04

基于昇腾Atlas 300V 24G推理卡的YOLO模型部署与调优实践
基于昇腾Atlas 300V 24G推理卡的YOLO模型部署与调优实践

前阵子团队准备把一套基于YOLOv5的检测服务从GPU服务器迁移到昇腾Atlas上,群里讨论最多的一句话就是:“atlas 300v 24g是运算加速卡吗?”我当时也愣了一下。后来翻完产品文档、踩了一周坑,才算把这卡的脾气摸清楚。如果你也是第一… · 2026/9/25 19:09:58

AllData数据中台集成DB-GPT:构建自然语言查询与多模态数据交互的智能数据问答系统
AllData数据中台集成DB-GPT:构建自然语言查询与多模态数据交互的智能数据问答系统

1. 数据中台与AI多模态数据库的融合背景1.1 从“数据孤岛”到“智能资产”的演进逻辑做过数据中台的人都有一个共同的痛:数据接进来了,表建好了,指标跑通了,但业务方还是不会用。他们不想写SQL,不想看BI看板&#xff0… · 2026/9/25 19:09:58

DEAP脑电情绪二分类实战:从EDF加载到XGBoost建模
DEAP脑电情绪二分类实战:从EDF加载到XGBoost建模

简介:本资源是一套基于DEAP脑电数据集的轻量级脑电情绪二分类实践方案,面向人工智能初学者、生物医学工程入门者及机器学习爱好者,聚焦情绪识别这一典型小样本分类任务。项目完整覆盖信号处理(FFT频域转换)、特征预处理… · 2026/9/25 19:09:58

人AB血清如何从科研走到IND/BLA?CGT原辅料资料包与DMF路径完整解析
人AB血清如何从科研走到IND/BLA?CGT原辅料资料包与DMF路径完整解析

摘要: CGT项目中的人AB血清选型不仅影响T细胞、NK细胞等细胞扩增,也会直接影响后续IND/BLA阶段的CMC资料准备。如果项目早期只按照细胞生长表现和采购价格选择血清,进入临床开发后才发现材料来源、供体控制、病原体安全、质量文件或DMF支持不… · 2026/9/25 19:09:46

实时Linux为什么要隔离内核?从系统调用到内核抢占,看懂硬实时系统的最后一道实时性边界
实时Linux为什么要隔离内核?从系统调用到内核抢占,看懂硬实时系统的最后一道实时性边界

前面的文章我们一直在讨论一个核心问题:如何让实时任务不被其他任务干扰?从CPU核心隔离,到IRQ隔离;从内存、Cache、DMA等资源控制,到实时IPC;再到Watchdog和故障隔离,我们实际上已经逐渐建立起了… · 2026/9/25 19:09:33

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码