我正在尝试为我的项目实现WebSocket,所以我在看这个教程https://aws.amazon.com/blogs/compute/announcing-websocket-apis-in-amazon-api-gateway/
我尝试部署他们链接的简单聊天应用程序https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:729047367331:applications~simple-websockets-chat-app
我能够使用wscat -c wss://url成功连接,但当我尝试发送消息时,我得到以下错误(有实际的id,我只是不确定它们是从哪里生成的,所以我让它们隐藏起来)
{"message": "Forbidden", "connectionId":"sample_id", "requestId":"sample_id"}
我不太确定是什么问题,因为这应该是一个完整的版本(我是否成功部署并连接到它?),我希望得到一些帮助
6条答案
按热度按时间ut6juiuv1#
在创建任何工作路由之前,必须在API网关上配置
$default
路由。wvyml7n52#
这对我来说很有用,我需要将对象字符串化,传递操作和数据
eqqqjvef3#
连接后,尝试
k3bvogb14#
经过几个小时的斗争,有几件事,你可以做:
1.(建议)在您的websocket api中创建一个自定义路由,您将通过websocket连接将消息发送到该路由。然后添加一个lambda集成(或您选择的其他后端集成)。在send命令中,您将路由的名称作为JSON序列化对象中的"action"发送。
注意:您可以发送任意数量的JSON字段,但一定要包含"action"!
1.在apigateway中的
$default
路由中添加lambda集成(或您选择的其他集成)。所有不是"连接"或"断开连接"的请求都将转到那里,因为您没有该路由的后端集成,AWS会友好地告诉您"禁止",就像apigateway REST API中缺少路由一样。在这两种情况下,在进行更改后,您需要部署API(在Actions标签下)使这些更改生效。所有这些挫折都可以通过更好的AWS文档来解决。
kx5bkwkv5#
这是我正在做的,但仍然得到了相同的
{“消息”:“禁止”,“连接ID”:“样品ID”,“请求ID”:“样品ID”}
nkkqxpd96#
多亏了@prachiSingh提供的解决方案,才能通过稍微调整发送一条示例消息.... {“消息”:“sendmessage”,“data”:“hello”}。基本上对sendmessage使用全部小写。