登录
首页 >  Golang >  Go问答

AWS API Gateway websocket 传输故障的原因

来源:stackoverflow

时间:2024-03-08 21:42:29 252浏览 收藏

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《AWS API Gateway websocket 传输故障的原因》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!

问题内容

我正在使用无服务器框架来设置一个 aws api gateway websocket,它调用用 go 编写的 lambda 函数。现在处理程序仅记录一条消息。我可以连接到 websocket,当我通过套接字发送消息时,我可以看到该消息已记录在 cloudwatch 中,但我总是收到类似

的错误消息
{
  "message": "internal server error",
  "connectionid": "eu3c1ce7cyccjpw=",
  "requestid": "eu3eqfx0iycfysq="
}

cloudwatch 中没有记录 lambda 错误。 aws api gateway 配置对我来说看起来不错。我不知道是什么原因导致了这种情况。

我的main.go:

package main

import (
    "fmt"

    "github.com/aws/aws-lambda-go/events"
    "github.com/aws/aws-lambda-go/lambda"
)

func handler(request events.apigatewaywebsocketproxyrequest) {
    fmt.println("default function ran")
}

func main() {
    lambda.start(handler)
}

可能不是超级相关,但 serverless.yaml 配置:

functions:
  websocket-default:
    handler: bin/ws
    events:
      - websocket:
          route: $default

我发送的有效负载:

{
  "action": "whatever",
  "data":  "{whatever}"
}

解决方案


不确定这是否是您代码中的唯一问题,但您的处理程序签名应该是 doc 中列出的签名:

func ()
func () error
func (tin) error
func () (tout, error)
func (context.context) error
func (context.context, tin) error
func (context.context) (tout, error)
func (context.context, tin) (tout, error)

好吧,这需要大量的试验和错误,但这是有效的方法签名

type Response events.APIGatewayProxyResponse

func Handler(context context.Context, request events.APIGatewayWebsocketProxyRequest) (Response, error)

我真的希望 golang 的文档更好。感谢克莱门特为我指明了正确的方向。

终于介绍完啦!小伙伴们,这篇关于《AWS API Gateway websocket 传输故障的原因》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>