向 AWS API 网关发送参数的 websocket 连接方法

问题描述 投票:0回答:1

我按照 本教程 使用 python、aws apigategay 和 serverless 创建一个小型聊天应用程序。连接到Websocket时,连接ID存储在数据库中。

一切都能如期进行,现在我希望能够通过角色连接到Websocket,比如说,聊天允许客户和商店员工。

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

我读到了API网关授权,但问题是,聊天将被包含在一个已经运行的应用程序中,该应用程序没有使用AWS授权。

有什么办法可以实现这个问题吗?

amazon-web-services aws-lambda aws-api-gateway serverless-framework
1个回答
0
投票

在您的连接调用中发送该值作为头,并在后端检索它与连接ID一起存储。

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"
    },

0
投票

你可以通过查询字符串发送参数,如下所示。

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

然后你可以从 event.queryStringParameters 的函数处理程序中。

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

希望对你有帮助🍻。

© www.soinside.com 2019 - 2024. All rights reserved.