【问题标题】:Sending parameters to AWS API gateway websocket connect method向 AWS API 网关 websocket 连接方法发送参数
【发布时间】:2020-07-05 12:21:18
【问题描述】:

我跟随this tutorial 使用python、aws apigategay 和无服务器创建了一个小型聊天应用程序。连接到 Websocket 时,连接 ID 存储在数据库中。

一切都按预期工作,现在我希望能够使用角色连接到 Websocket,例如聊天允许客户和商店员工。

我正在尝试找到一种将参数发送到连接方法的方法,但到目前为止还没有运气。例如,在建立连接时,我想发送一个角色 ID 并存储在数据库中,以指定连接 ID 属于客户或存储员工。

我了解了 API 网关授权,但问题是聊天将包含在已运行但未使用 AWS 授权的应用程序中。

有没有办法做到这一点?

【问题讨论】:

  • 可能类似于 queryStringParameters?但找不到任何示例

标签: amazon-web-services aws-lambda aws-api-gateway serverless-framework


【解决方案1】:

您可以通过查询字符串发送参数如下:

 $  wscat -c wss://ws.mycustomdomain.com/?test=123

然后您可以从函数处理程序中的event.queryStringParameters 获取该参数。

def handler(event, context):
    connectionId = event['queryStringParameters']['test']

希望对你有所帮助?

【讨论】:

    【解决方案2】:

    在连接调用中将值作为标头发送,并在后端检索它以与 connectionId 一起存储。

    wscat --connect wss://aaaaaaaa.execute-api.us-east-2.amazonaws.com/test --header myHeader:myValue
    

    在我的 lambda 中,标题看起来像,

    "headers": {
            "Host": "xxxxxxx.execute-api.us-east-2.amazonaws.com",
            "myHeader": "myValue",
            "Sec-WebSocket-Extensions": "permessage-deflate; client_max_window_bits",
            "Sec-WebSocket-Key": "xxxxxxx",
            "Sec-WebSocket-Version": "13",
            "X-Amzn-Trace-Id": "xxxxxxx",
            "X-Forwarded-For": "xxxxxx",
            "X-Forwarded-Port": "443",
            "X-Forwarded-Proto": "https"
        },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-09
      • 2019-08-17
      • 2021-01-06
      • 1970-01-01
      • 2020-05-14
      • 2013-07-24
      • 2013-03-18
      相关资源
      最近更新 更多