以下示例项目为例:https://github.com/aws-samples/simple-websockets-chat-app
onconnect方法如下:
const AWS = require('aws-sdk');
const ddb = new AWS.DynamoDB.DocumentClient({ apiVersion: '2012-08-10', region: process.env.AWS_REGION });
exports.handler = async event => {
const putParams = {
TableName: process.env.TABLE_NAME,
Item: {
connectionId: event.requestContext.connectionId
}
};
try {
await ddb.put(putParams).promise();
} catch (err) {
return { statusCode: 500, body: 'Failed to connect: ' + JSON.stringify(err) };
}
return { statusCode: 200, body: 'Connected.' };
};
如何查看此event
对象具有的其他字段?我找不到文档。
连接到Websocket时可以从客户端传递参数吗?像wss://path.to.socket/someparameter
一样,如何从该event
对象访问它?
我想向数据库添加另一个参数:
const putParams = {
TableName: process.env.TABLE_NAME,
Item: {
connectionId: event.requestContext.connectionId,
someparameter: event.someparameter // <-- What's the right way?
}
};
谢谢!
答案 0 :(得分:2)
要在连接时传递参数:wss://path.to.socket?param1=value1¶m2=value2
。
如果使用wscat,则可能需要添加引号:
wscat -c 'wss://path.to.socket?param1=value1¶m2=value2'
要通过lambda访问参数,请执行以下操作:
exports.handler = async event => {
const { connectionId, domainName, stage } = event.requestContext;
const param1 = event.queryStringParameters.param1;
const param2 = event.queryStringParameters.param2;
//or: const { param1, param2 } = event.queryStringParameters;
...
};