在AWS API Gateway中,我们可以使用API Gateway的WebSocket功能来创建WebSocket连接。如果我们希望在客户端连接成功时,仅返回一次有关WebSocket连接的初始信息,我们可以使用AWS API Gateway提供的send()函数来实现这个功能。
以下是一个示例代码,展示如何在成功连接后仅发送一次初始信息:
import json
def lambda_handler(event, context):
connection_id = event['requestContext']['connectionId']
# 只有当连接事件发生时,我们才发送初始消息
if event['requestContext']['eventType'] == 'CONNECT':
# 发送初始消息
initial_message = {'message': 'WebSocket连接已成功建立!'}
message_string = json.dumps(initial_message)
endpoint_url = 'https://' + event['requestContext']['domainName'] + '/' + event['requestContext']['stage']
header = {'Content-Type': 'application/json', 'X-API-Key': 'YOUR_API_KEY'}
api_client = boto3.client('apigatewaymanagementapi', endpoint_url=endpoint_url, region_name='REGION_NAME',
aws_access_key_id='AWS_ACCESS_KEY', aws_secret_access_key='AWS_SECRET_ACCESS_KEY')
response = api_client.post_to_connection(ConnectionId=connection_id, Data=message_string.encode('utf-8'))
# 这里是处理传入的消息的逻辑
handle_message(event, context)
return {'statusCode': 200, 'body': 'Connected.'}
请注意,以上代码假定您已将REST API与WebSocket集成,并通过使用AWS Lambda来处理WebSocket消息。代码仅在连接事件时发送初始消息,并在handle_message()函数中处理传入的消息。