GOOGLE ADS

среда, 27 апреля 2022 г.

GoneException при вызове post_to_connection на AWS lambda и шлюзе API

Я хочу отправить сообщение клиенту веб-сокета, когда он подключается к серверу на шлюзе AWS lambda и API. В настоящее время я использую wscat в качестве клиента. Поскольку ответ «подключено» не отображается в консоли wscat, когда я подключаюсь к серверу, я добавил post_to_connection для отправки клиенту сообщения «hello world». Однако он вызывает GoneException.

Произошла ошибка (GoneException) при вызове операции PostToConnection

Как я могу решить эту проблему и отправить какое-то сообщение на wscat при подключении к серверу?

Мой код Python ниже. Я использую Python 3.8.5.

import os
import boto3
import botocore
dynamodb = boto3.resource('dynamodb')
connections = dynamodb.Table(os.environ['TABLE_NAME'])
def lambda_handler(event, context):
domain_name = event.get('requestContext',{}).get('domainName')
stage = event.get('requestContext',{}).get('stage')
connection_id = event.get('requestContext',{}).get('connectionId')
result = connections.put_item(Item={ 'id': connection_id })
apigw_management = boto3.client('apigatewaymanagementapi',
endpoint_url=F"https://{domain_name}/{stage}")
ret = "hello world";
try:
_ = apigw_management.post_to_connection(ConnectionId=connection_id,
Data=ret)
except botocore.exceptions.ClientError as e:
print(e);
return { 'statusCode': 500,
'body': 'something went wrong' }
return { 'statusCode': 200,
"body": 'connected'};


Решение проблемы

Самостоятельный ответ: вы не можете post_to_connection к самому соединению в onconnect.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...