react-native - Amplify GraphQL 订阅不响应事件
问题描述
我目前正在使用 AWS Amplify 框架构建一个 React Native 应用程序。
在我的应用程序中,应该有一个实时仪表板,当新项目添加到数据库时会更新。
为了实现这个功能,我使用了 Amplify 和 AppSync API 的 GraphQL 订阅。
由于某种原因,订阅不会响应数据库上发生的事件。
这是我的代码:
import React, { useEffect } from 'react';
import { API, graphqlOperation } from 'aws-amplify';
import * as subscriptions from '../../src/graphql/subscriptions';
const App = () => {
useEffect(() => {
subscribeUsers();
}, []);
const subscribeUsers = async () => {
await API.graphql(graphqlOperation(subscriptions.onCreateUser, {appId: appId})).subscribe({
next: (todoData) => console.log(todoData),
error: (err) => console.log(err)
});
}
...
}
export default App;
这是我的 index.js 代码:
import {AppRegistry} from 'react-native';
import App from './App';
import {name as appName} from './app.json';
import Amplify from 'aws-amplify';
import config from './aws-exports';
AppRegistry.registerComponent(appName, () => App);
Amplify.Logger.LOG_LEVEL = 'DEBUG';
Amplify.configure(config);
调试日志显示连接已启动:
AWSAppSyncRealTimeProvider - subscription message from AWS AppSync RealTime: {"id":"...","type":"start_ack"}
此外,每分钟我都会收到一条日志消息,告诉我连接仍然存在,这很奇怪,因为我没有得到任何正在发生的事件的信息:
AWSAppSyncRealTimeProvider - subscription message from AWS AppSync RealTime: {"type":"ka"}
AWSAppSyncRealTimeProvider {"id": "", "observer": null, "query": "", "variables": {}}
GraphQL 架构由 AppSync API 直接生成。
我的订阅有什么问题吗?
解决方案
Apparently, the reason I didn't get any updates from the subscription was because I tested it by adding a new item to the DB from the DynamoDB console, while AppSync subscriptions only work if the creating call is being made using the same AppSync API.
推荐阅读
- c++ - 光线追踪中的平面显得太暗
- apache-kafka - 模拟 Kafka CommitFailedException
- node.js - 如何在 webhook 触发的函数运行后将信息发送回前端?
- json - 我如何在 json 中进入这个字典?
- java - 带有图标可点击 Java 的 JButton
- sql - 如何使用 SQL 获取 2 列之间日期差异的计数(值的分布)?
- unit-testing - 如何在测试期间模拟 vt vue-i18n 指令以返回密钥
- php - WordPress中的垃圾邮件类型
- javascript - 当我单击一个类别时,会显示所有类别的子类别
- class - 如何从场景中的另一个类调用变量和函数?