数据无法到达AWS API网关websocket中的WebSocket客户端

p8h8hvxi  于 2023-02-04  发布在  其他
关注(0)|答案(1)|浏览(120)
    • bounty将在3天后过期**。回答此问题可获得+50声望奖励。Hardik Parmar希望引起更多人对此问题的关注:我从过去的10天就被卡住了。已经读了很多文章,但是没有用。

我已经创建了一个lambda函数,我无法将数据发送到Web套接字客户端。但是没有错误。
直到昨天代码还在工作。不知道发生了什么事,现在它停止工作了。

public string FunctionHandler(string input, ILambdaContext context)
        {
            try
            {
                string SK = "xxxxxx";
                string AK = "xxxx";
    
                var stream = new MemoryStream(UTF8Encoding.UTF8.GetBytes(input));
                
                var apiClient = new AmazonApiGatewayManagementApiClient(AK,SK,new AmazonApiGatewayManagementApiConfig 
                { ServiceURL = $"https://xxxxxx.execute-api.us-east-1.amazonaws.com/Test" });
                
                apiClient.PostToConnectionAsync(new Amazon.ApiGatewayManagementApi.Model.PostToConnectionRequest
                {
                    ConnectionId = "​fdCqPfd0oAMCJmg=",
                    Data = stream
                });
    
                return input.ToUpper();
            }
            catch(Exception ex)
            {
                return ex.ToString();
            }
        
    }
oipij1gg

oipij1gg1#

我猜您使用的是.NET AmazonApiGatewayManagementApiClient。您缺少apiClient.PostToConnectionAsync()await关键字:

await apiClient.PostToConnectionAsync(...);

否则,您将在不等待完成的情况下调用PostToConnectionAsync(),并且您的Lambda可能会在请求运行 * 之前 * 完成并退出,您将永远不会知道这一点。(参见asynchronous concepts了解详细信息)
或者,不要使用异步方法:

apiClient.PostToConnection(...);

相关问题