API网关网络套接字-函数正在发送两条消息

问题描述 投票:0回答:1

我正在使用无服务器apigateway Websocket,可以成功地在lambda函数和客户端之间来回发送消息。

但是我不知道如何让我的功能仅发送一条消息。由于该函数结尾处的回调,它当前正在发送两条消息。这更多的是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

添加中

 callback(null, {});

仍然发送两条消息,但第二条消息现在为空。我如何才能严格只发送one邮件

node.js amazon-web-services aws-lambda aws-api-gateway
1个回答
0
投票

使用empty对象返回,当从WebSocket网关调用此函数时,返回值将被忽略

    return {}; // callback(null, {});
© www.soinside.com 2019 - 2024. All rights reserved.