Я использую серверные веб-сокеты apigateway и могу успешно получать сообщения, отправляемые назад и вперед между лямбда-функцией и клиентом.
Однако я не могу понять, как заставить мою функцию отправлять только одно сообщение. В настоящее время он отправляет два сообщения из-за обратного вызова в конце функции. Это в большей степени проблема nodejs, но последние пару часов я пытался выяснить, как, но, похоже, не могу.
var params2 = {
TableName: "UserConnections",
FilterExpression: "cameraId = :val",
ExpressionAttributeValues: { ":val": {"S" : JSON.parse(event.body).data.camera_id}}
};
DDB.scan(params2, function(err, data) {
if (err) throw err;
console.log("DATA: " + JSON.stringify(data));
for(var i = 0; i<data['Items'].length; i++){
var id = data['Items'][i]['connectionId'].S;
console.log("List of connection ids: " + id);
var params3 = {
ConnectionId: id,
Data: JSON.stringify(message)
};
apigatewaymanagementapi.postToConnection(params3, function(err, data) {
if (err){
throw err; // an error occurred
}else{
console.log("Success sending message to clients: " + JSON.stringify(data));
}
});
}
});
callback(null, {
statusCode: 200,
body: "Message Processed in Lambda!"
});
В методе postToConnection он отправляет сообщение обратнодля нескольких пользователей, и функция обратного вызова отправляет тело тем же пользователям. Как я могу просто отправить params3 обратно пользователям и не использовать обратный вызов для завершения функции
Edit1: ______________________________________________
![enter image description here](https://i.stack.imgur.com/ZOojn.png)
Добавление
callback(null, {});
Тем не менее отправляет два сообщения, за исключением того, что второе теперь пусто. Как я могу заставить его строго отправлять только одно сообщение