Я хочу отправить сообщение клиенту веб-сокета, когда он подключается к серверу на шлюзе 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.
Комментариев нет:
Отправить комментарий