以下是一个使用AWS的WebSocket从Dynamo DB将数据发送到客户端的解决方案的代码示例:
import boto3
# 创建DynamoDB客户端
dynamodb = boto3.resource('dynamodb')
# 创建表
table_name = 'MyTable'
table = dynamodb.create_table(
TableName=table_name,
KeySchema=[
{
'AttributeName': 'id',
'KeyType': 'HASH'
}
],
AttributeDefinitions=[
{
'AttributeName': 'id',
'AttributeType': 'S'
}
],
ProvisionedThroughput={
'ReadCapacityUnits': 5,
'WriteCapacityUnits': 5
}
)
# 插入数据
table.put_item(
Item={
'id': '1',
'name': 'John'
}
)
table.put_item(
Item={
'id': '2',
'name': 'Jane'
}
)
/data
.import json
def lambda_handler(event, context):
# 获取请求信息
connection_id = event['requestContext']['connectionId']
domain_name = event['requestContext']['domainName']
# 查询DynamoDB表
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('MyTable')
response = table.scan()
# 构建要发送的数据
data = []
for item in response['Items']:
data.append({
'id': item['id'],
'name': item['name']
})
# 构建WebSocket API请求URL
api_url = f'https://{domain_name}/{event["requestContext"]["stage"]}'
post_to_connection_url = f'{api_url}/@connections/{connection_id}'
# 发送数据到WebSocket客户端
gatewayapi = boto3.client('apigatewaymanagementapi', endpoint_url=api_url)
gatewayapi.post_to_connection(
ConnectionId=connection_id,
Data=json.dumps(data).encode('utf-8')
)
// 创建WebSocket连接
const socket = new WebSocket('wss://your-api-endpoint/data');
// 监听服务器消息
socket.onmessage = function(event) {
const data = JSON.parse(event.data);
console.log('Received data:', data);
// 处理接收到的数据
}
通过以上步骤,您可以使用AWS的WebSocket从Dynamo DB将数据发送到客户端。