由于 MQTT 错误,AWS App Sync 订阅不起作用

Posted

技术标签:

【中文标题】由于 MQTT 错误,AWS App Sync 订阅不起作用【英文标题】:AWS App Sync Subscriptions not working because of MQTT error 【发布时间】:2021-06-30 06:57:18 【问题描述】:

我在我的 react 应用上调用这个 graphql 订阅:

export const OnCreateMessage = `
  subscription OnCreateMessage($conversationId: ID!) 
    onCreateMessage(messageConversationId: $conversationId) 
      id
      content
      authorId
      messageConversationId
      createdAt
    
  
`

这是我在类组件中的调用方式:

API.graphql(
    graphqlOperation(subscriptions.OnCreateMessage, conversationId: "c074c7b7-f6db-459a-a1d8-cd290aee33ea")
  ).subscribe(
    next: ( provider, value ) => console.log(provider, value),
    error: error => console.warn("did not get messages")
);

但是,当我运行我的应用程序并调用它时,我在网络选项卡上收到此错误:


  "errors" : [ 
    "errorType" : "BadRequestException",
    "message" : "Subscriptions over MQTT is not supported."
   ]

我在 AWS 文档中看到“MQTT over WebSockets 将不再可用于新的 AppSync API”,但我不知道现在该做什么。

有人可以调查一下并帮助我吗?

【问题讨论】:

我们目前也遇到了这个问题。 MQTT 已在所有新 API 和新区域 (docs.aws.amazon.com/appsync/latest/devguide/…) 上弃用。只是希望 AWS 有更好的库支持! 我想您正在使用 aws-appsync (npmjs.com/package/aws-appsync) 包中的 AWSAppSyncClient (github.com/awslabs/aws-mobile-appsync-sdk-js/blob/…)?如果是这样,您使用的是哪个版本的软件包?我建议您更新到最新版本,因为您可能已经过时了。 【参考方案1】:

我不确定您是否找到了答案,但我们在一个项目中面临同样的问题,它要求您使用可以通过纯 WebSockets 处理订阅的 GraphQL 客户端。请参阅this question 关于使用 AWS AppSync 客户端的答案。

【讨论】:

以上是关于由于 MQTT 错误,AWS App Sync 订阅不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS Amplify 和 App Sync 与使用 Mongodb 的现有节点服务器

如何在 graphQL 中编写 JOIN 或从多种类型中获取结果 - AWS App sync iOS

AWS IOT MQTT:在 chrome 中出现错误 ERR_CERT_SYMANTEC_LEGACY

AWS S3 Sync - 结算报表GetObject(拒绝访问)

开源app 控制ESP8266,通过mqtt,app inventor开发

AWS IoT 设备网关是 MQTT 代理吗?