可以使用 API 网关的握手协议功能来创建 WebSocket 连接,并在 Lambda 函数中处理 WebSocket 客户端发送的消息和事件。以下是一个使用 AWS API 网关和 AWS Lambda 处理 WebSocket 的代码示例:
exports.handler = async (event, context) => {
const requestId = event.requestContext.requestId;
if (event.requestContext.eventType === 'CONNECT') {
console.log(`WebSocket connected: ${requestId}`);
} else if (event.requestContext.eventType === 'DISCONNECT') {
console.log(`WebSocket disconnected: ${requestId}`);
} else if (event.requestContext.eventType === 'MESSAGE') {
console.log(`WebSocket message received: ${event.body}`);
}
return {};
};
在此示例中,Lambda 函数根据 WebSocket 请求上下文的事件类型来处理连接、断开和消息事件。可以像通常一样在 Lambda 函数中使用其他 AWS 服务,如 AWS DynamoDB 或 AWS SNS 来处理 WebSocket 消息。同时,必须明确指定正确的 API 网关提供的连接 ID 并在处理 WebSocket 消息时将其作为 WebSocket 连接的标识符使用。