AWS AppSync - 订阅握手期间出错

Posted

技术标签:

【中文标题】AWS AppSync - 订阅握手期间出错【英文标题】:AWS AppSync - Error during subscription handshake 【发布时间】:2019-05-23 13:57:41 【问题描述】:

当我没有订阅解析器时,我的订阅没有任何问题,但是当我将解析器设置为仅允许特定用户时,在我的 Angular 应用程序中出现此错误

appsync.service.ts:187 错误:订阅握手期间出错 在新的 ApolloError (ApolloError.js:37) 在订阅-握手-link.js:116 在新订阅 (Observable.js:183) 在 Observable.subscribe (Observable.js:262) 在 index.js:20 在 ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:388) 在 Object.onInvoke (core.js:3820) 在 ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:387) 在 Zone.push../node_modules/zone.js/dist/zone.js.Zone.run (zone.js:138) 在 zone.js:872

解析器

数据源类型:无

配置请求映射模板。

#set ($a= $context.identity.cognitoIdentityAuthProvider.split(":"))
#set ($s= $a.get(2))
#set ($stringLength = $s.length() - 1) 
#set ($sub = $s.substring(0,$stringLength))



    "version": "2017-02-28",
    "payload": 
        "from": "$sub",
        "id":"$context.arguments.id"
    

配置响应映射模板。

#if($context.arguments.id == $context.result.from)
    $util.toJson($context.result)
#else
    $utils.unauthorized()
#end

只是为了简化,我尝试了这个解析器响应,但我遇到了同样的错误

$util.toJson($context.result)

【问题讨论】:

您能提供更多信息吗?架构、类型等? 【参考方案1】:

如果我将 $util.toJson($context.result) 替换为 null 工作正常。

#if($context.arguments.id == $context.result.from)
    null
#else
    $utils.unauthorized()
#end

【讨论】:

以上是关于AWS AppSync - 订阅握手期间出错的主要内容,如果未能解决你的问题,请参考以下文章

AWS EB:WebSocket 握手期间出错:意外响应代码:400

Apollo 2.x 客户端和服务器设置:WebSocket 握手期间出错?

Spring Boot - WebSocket 握手期间出错

Django:WebSocket 握手期间出错:意外的响应代码:500

“WebSocket 握手期间出错:状态行无效”

WebSocket 握手期间出错:意外响应代码:503