要解决此问题,需要在使用WebSockets时确保正确设置API网关的部署和集成设置。还需要在Lambda函数中正确处理WebSocket请求以获取正确的event.requestContext。
以下是一个示例Lambda函数和API网关配置,可以正确处理WebSocket请求并获得正确的event.requestContext:
Lambda函数代码示例:
exports.handler = async (event) => {
const connectionId = event.requestContext.connectionId;
const body = JSON.parse(event.body);
const message = body.message;
// Handle WebSocket message here
return { statusCode: 200 };
};
API网关配置示例:
在集成请求设置中,将“使用Lambda代理集成”选项设置为“是”。在“HTTP请求参数”下,将“映射模板”设置为:
{
"body": $input.json('$'),
"requestContext": {
"connectionId": "$context.connectionId"
}
}
在部署设置中,选择WebSocket协议,并将“整合类型”设置为Lambda。同时,需要指定WebSocket的路由和默认Lambda函数名称。
完成以上操作后,即可正确处理WebSocket请求并获得正确的event.requestContext。