PostGraphile 订阅 - “主题”指的是啥?

Posted

技术标签:

【中文标题】PostGraphile 订阅 - “主题”指的是啥?【英文标题】:PostGraphile subscriptions - what does "topic" refer to?PostGraphile 订阅 - “主题”指的是什么? 【发布时间】:2021-05-03 00:52:45 【问题描述】:

我正在使用 PgPubsub,我正试图了解 listentopic*:"" vis-a-vis 放在那里的内容。

例如,假设我有一个<PostList> 组件,它呈现<Post> 的列表,我想在创建或删除帖子时更新列表。

我不确定如何组织我的订阅,所以我正在监听 PostList 的更改。这是我的 GraphiQL 的屏幕截图:

【问题讨论】:

【参考方案1】:

在pubsub(发布-订阅)中,消息被发布到一个“主题”,您可以订阅该主题以接收在那里发布的消息。

您似乎在 PostGraphile 中使用 "simple subscriptions" 功能,所以我会假设是这种情况来回答。

有了订阅listen(topic: "whatGoesHere?"),你需要广播到postgraphile:whatGoesHere?主题来触发订阅事件。您可以通过发出 SQL 语句 NOTIFY "postgraphile:whatGoesHere?", '"ok": true'; 来执行此操作。你可以通过psql 做到这一点:

$ psql your_database_here
[your_database_here] # NOTIFY "postgraphile:whatGoesHere?", '"ok": true';
NOTIFY
[your_database_here] # 

假设您的 GraphQL 订阅正在运行,这应该会导致评估选择集并将结果发送到 GraphiQL。

您可能希望从函数或触发器中触发此NOTIFY 语句;您可以在PostGraphile Subscriptions documentation 中阅读更多相关信息。

【讨论】:

谢谢先生。是的,我正在使用简单的简单订阅,因为当我将其设置为 false 并启动应用程序时,订阅类型从我的架构中消失了,我在 GraphiQL 中得到了"Schema is not configured for subscriptions"。老实说,我是一个全新的全栈开发人员,我什至不知道我是否需要 pubsub,因为我正在使用 Relay。当我添加或删除帖子时,我的 post 表更新正常,但现在我只是尝试实时更新 UI 而无需刷新页面。

以上是关于PostGraphile 订阅 - “主题”指的是啥?的主要内容,如果未能解决你的问题,请参考以下文章

AWS 弹性 beantalk 上的 postgraphile 出现 408 超时错误

PostgreSQL / PostGraphile行权限不起作用

PostGraphile deleteEdge 具有多对多关系

Google 的云发布/订阅中的主题是不是区分大小写?

当一批用户订阅Firebase中的主题时,权限被拒绝错误

深入了解kafka系列-消费者