我在 Android 应用程序中使用新的 AWS AppSync 服务,使用 IAM 身份验证(访问密钥和密钥),以便用户可以通过 Google Map API 实时共享他们的位置。为此,我创建了一个在 AppSync 的查询控制台中运行良好的订阅。但是当我在我的应用程序中实现订阅时,它无法正常工作。
这是一个用例:
- 用户 A 访问地图,查看通过 GraphQL 订阅发送到 AppSync 服务的他的位置
- 用户 B 做同样的事情。
- 用户 A 发送他最后的位置
- 用户 B 收到,用户 A 出现在用户 B 地图上
- 用户 B 发送他的最后一个位置,但用户 A 从未收到它
如果用户 A 退出地图并重新打开它,GraphQL 订阅也会重新打开,他会收到用户 B 在订阅后发送的最后一个位置。
一开始,我有两个使用 API Key 认证的 GraphQL 订阅,但是实时的不行。仅删除订阅后,按照此答案https://stackoverflow.com/a/49242267/4862232,一切正常。
但是由于我更改了身份验证方法,所以我遇到了麻烦,这里是代码:
AWSAppSyncClient client = AWSAppSyncClient.builder()
.context(context)
.serverUrl(APPSYNC_ENDPOINT)
.region(APPSYNC_REGION)
.credentialsProvider(new StaticCredentialsProvider(new BasicAWSCredentials(APPSYNC_ACCESS_KEY, APPSYNC_SECRET_KEY)))
.defaultResponseFetcher(AppSyncResponseFetchers.NETWORK_FIRST)
.build();
任何帮助,将不胜感激。