Отправка параметров в AWS метод подключения к веб-сокету шлюза API - PullRequest
1 голос
/ 05 мая 2020

Я следовал этому руководству , чтобы создать небольшое чат-приложение с использованием python, aws apigategay и без сервера. При подключении к Websocket идентификатор соединения сохраняется в базе данных.

Все работает, как ожидалось, теперь я хочу иметь возможность подключиться к Websocket с ролью, скажем, например, чат позволяет клиентам и хранить сотрудники.

Я пытаюсь найти способ отправить параметр в метод подключения, но пока безуспешно. Например, при установлении соединения я хочу отправить идентификатор роли и сохранить в базе данных, чтобы указать, что идентификатор подключения принадлежит клиентам или сотрудникам магазина.

Я читал об авторизации шлюза API, но дело в том, что чат будет включен в уже работающее приложение, которое не использует авторизацию AWS.

Есть ли способ выполнить sh это?

Ответы [ 2 ]

1 голос
/ 05 июля 2020

Вы можете отправить параметры через строку запроса следующим образом:

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

Затем вы можете получить этот параметр из event.queryStringParameters в обработчике функции.

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

Надеюсь, что это поможет ?

1 голос
/ 06 мая 2020

Отправьте значение в качестве заголовка в вызове подключения и получите его в бэкэнде для хранения вместе с идентификатором подключения.

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

В моей лямбде заголовки выглядели так:

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