AWS Lambda本身可以实现连接和消息的处理,但它无法处理Websocket协议的连接。要处理Websocket连接,最简单的方法是使用AWS API Gateway,根据API Gateway的部署配置,连接可以转到不同的Lambda函数。
以下是一个简单的示例,使用了API Gateway和Lambda实现了Websocket连接的处理:
在AWS控制台的API Gateway服务中,创建一个新的API。
在API中创建一个WebSocket API路由,将其与Lambda函数集成。
在Lambda函数中处理连接和消息,并将输出发送回客户端。
以下是用Node.js编写的Lambda函数示例代码:
const AWS = require('aws-sdk'); const apigatewayManagementApi = new AWS.ApiGatewayManagementApi({ apiVersion: '2018-11-29', endpoint: 'YOUR_API_GATEWAY_ENDPOINT' });
exports.handler = async (event) => { const connectionId = event.requestContext.connectionId; const message = 'Hello from Lambda!';
try { await apigatewayManagementApi.postToConnection({ ConnectionId: connectionId, Data: message }).promise();
return { statusCode: 200, body: 'Data sent.' };
} catch (e) { console.log(e);
return { statusCode: 500, body: 'Failed to send message.' };
} };
在API Gateway控制台中,将Lambda函数与WebSocket API路由集成。完成后,可以使用任何WebSocket客户端连接到API Gateway端点,以收到来自Lambda函数的消息。