飞布产品手册
官网B站Github
V1.0
V1.0
  • 序言
  • 更新日志
  • 产品简介
    • 什么是飞布?
    • 飞布的价值
    • 飞布的优势
    • 应用场景
    • 数据安全
    • 产品案例
  • 快速入门
    • 初识飞布
    • 快速上手
      • 图文版
    • 词汇概览
    • 工作原理
  • 基础-可视化开发
    • 概览
      • CLI
      • 控制台
        • 主功能区
    • 数据源
      • 数据库
        • 数据库连接
          • 高级设置
        • 数据建模
        • 数据预览
      • REST 数据源
      • GraphQL 数据源
      • 消息队列
    • API构建
      • 可视化构建
        • API规范
      • 批量新建
      • HTTP请求流程指令
      • 使用API
      • 实时查询
      • 实时推送
      • 关联查询
      • 数据缓存
      • 常见用例
    • 身份验证
      • 授权码模式
        • 身份验证(废弃)
      • 隐式模式
      • 数据权限控制
    • 身份授权
      • RBAC
        • 授权与访问控制(废弃)
      • 接口权限控制
      • 开放API
    • 文件存储
      • S3配置及使用
      • 文件管理面板
      • 高级配置:profile
  • 进阶-钩子机制
    • 钩子概览
    • 启动钩子
      • Node钩子
      • Golang钩子
      • Python钩子
      • Java钩子
    • OPERATION钩子
    • 身份验证钩子
    • graphql钩子
    • 函数钩子
      • functions(废弃)
      • proxys(废弃)
    • 文件上传钩子
    • 内部调用
  • 使用-部署上线
    • 部署运维
      • 手动部署
        • 流水线部署(废弃)
      • Docker部署
      • 飞布云
    • 接口安全
      • CSRF token 保护
      • 跨域访问
    • 客户端SDK
      • 微信小程序SDK
      • Flutter SDK
      • uniapp SDK
  • 环境准备
    • 文件存储 S3
    • 身份认证 OIDC
    • NodeJs环境
  • 实战案例
    • Fireboom Admin
      • 管理后台-refine(废弃)
    • 实时TODO LIST
    • 语音版ChatGPT
    • AI魔法师实战
    • 阿里低代码引擎
  • 路线图
  • 常见问题
  • 核心概念
    • GraphQL
    • 超图
    • 请求时序图
    • 服务端Operation
  • 二次开发
    • 钩子规范
      • 钩子规范bak
    • 模板规范
    • 自定义模板
    • 其它参考
由 GitBook 提供支持
在本页
  • GraphQL订阅
  • 实时推送
  • 客户端使用

这有帮助吗?

在GitHub上编辑
  1. 基础-可视化开发
  2. API构建

实时推送

上一页实时查询下一页关联查询

最后更新于1年前

这有帮助吗?

除了实时查询外,飞布还支持实时推送功能,常见用例:接入消息队列。相对于实时查询的准实时更新,实时推送是实时更新。

实时推送基于graphql的订阅 operation实现。订阅类似查询,但不是在一次读取中返回数据,而是持续获取服务器推送的数据。这适用于实时应用场景,如IM或物联网应用。

GraphQL订阅

一般情况下,GraphQL 订阅是发送到 WebSocket 端点的订阅查询字符串。 每当后端出现数据变化,新数据都会通过 WebSocket 从服务器向客户端推送。

例如,下面是一个基于,正在执行订阅请求,数据通过WebSocket不断推送到客户端。

实时推送

与通常graphql 服务不同,飞布基于SSE实现了实时推送,将上游的WebSocke订阅事件,转换为HTTP长连接。

当客户端访问时,飞布先与具有订阅接口的gql数据源建立连接,然后等待WebSocke推送数据,并将数据在通过SSE推送给客户端。

其流程图如下所示:

首先,当客户端订阅服务时①,飞布服务同步订阅事件源②。

然后,等待事件源推送消息给飞布服务③,飞布将其转发给客户端④。

最后,当客户端取消订阅时⑤,飞布也取消订阅⑥。

其中,③和④在取消订阅前,循环执行。

构建如下SUBSCRIPTION OPERATION:

Sub.graphql
subscription MyQuery {
  gql_messageCreated {
    content
    id
  }
}

点击顶部工具栏的 ”复制“ICON,获取访问地址:http://localhost:9991/operations/Sub?wg_see=true 。

前往访问,可以看到数据实时推送到界面。响应是一个JSON对象流,由两个换行符分割。

此外,若只想获取一次数据,则需要用 wg_subscribe_once 代替 wg_see。

  • 订阅1次:wg_subscribe_once=true

  • 持续订阅:wg_see=true

同理,订阅OPERATION编译的REST API也可复用HTTP的身份鉴权。在该OPERTION中设置的登录校验或者权限控制,无需任何额外操作,都可以应用到实时推送接口中。

SUBSCRIPTION OPERATION不能被声明为内部。

客户端使用

SSE TypeScript示例:

前往
订阅流程图
NodeJs构建的GraphQL 服务