放大 GraphQL 订阅不响应事件
Amplify GraphQL subscriptions don't respond to events
我目前正在使用 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。
我的订阅有什么问题吗?
显然,我没有从订阅中获得任何更新的原因是因为我通过从 DynamoDB 控制台向数据库添加新项目来测试它,而 AppSync 订阅仅在使用创建调用时才有效相同的 AppSync API.
我目前正在使用 AWS Amplify 框架构建 React Native 应用程序。
在我的应用程序中,应该有一个实时仪表板,它会在将新项目添加到数据库时得到更新。
为实现此功能,我通过 Amplify 和 AppSync API.
由于某种原因,订阅不会响应数据库上发生的事件。
这是我的代码:
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。
我的订阅有什么问题吗?
显然,我没有从订阅中获得任何更新的原因是因为我通过从 DynamoDB 控制台向数据库添加新项目来测试它,而 AppSync 订阅仅在使用创建调用时才有效相同的 AppSync API.