【问题标题】:Amplify GraphQL subscriptions don't respond to eventsAmplify GraphQL 订阅不响应事件
【发布时间】:2021-01-29 15:47:41
【问题描述】:

我目前正在使用 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 api 时完成,还是直接在 aws 控制台的 db 中或使用 aws sdk documentclient 完成更改(例如)?订阅仅在您通过 appsync api 更新或添加项目时收到消息,因为生成消息的是 aws appsync。直接对数据库进行的更改,在 appsync 之外不会发送任何消息,因为 appsync 永远不会收到更改已完成的消息。
  • 哦,很高兴知道。我只使用控制台检查了它,没有使用 AppSync,所以我猜这就是导致问题的原因

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


【解决方案1】:

显然,我没有从订阅中获得任何更新的原因是因为我通过从 DynamoDB 控制台向数据库添加新项目来测试它,而 AppSync 订阅只有在使用相同的创建调用时才有效AppSync API。

【讨论】:

    猜你喜欢
    • 2019-04-14
    • 2022-08-17
    • 2018-09-23
    • 2020-01-10
    • 2019-06-28
    • 2017-08-09
    • 1970-01-01
    • 2020-11-20
    • 2021-03-27
    相关资源
    最近更新 更多