放大GraphQL订阅不响应事件

时间:2020-10-15 07:32:19

标签: react-native graphql aws-amplify graphql-subscriptions

我目前正在使用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直接生成的。

我的订阅有什么问题吗?

1 个答案:

答案 0 :(得分:0)

显然,我没有从订阅中获取任何更新的原因是因为我通过从DynamoDB控制台向数据库添加新项来对其进行了测试,而AppSync订阅仅在使用相同的创建调用时才起作用AppSync API。