AWS API Gateway Websocket UnknownError

kri*_*hna 7 amazon-web-services websocket aws-api-gateway

我们在执行 SDKpostToConnection()调用作为承诺时遇到错误,下面给出了完整的错误详细信息。同一函数中具有不同连接 ID 的其他调用成功发生。预期的 410 连接错误以毫秒为单位正确发生,并得到妥善处理。

然后,此错误需要 40 秒到一分钟多的时间才能返回,这会导致它始终在 Web 套接字 API 中导致“端点请求超时”错误,因为它有 30 秒的最大请求超时。有没有人遇到过这个问题和/或实施过任何解决方案?任何解决问题的想法将不胜感激,谢谢。

UnknownError:与 Object.extractError 处的端点通信的网络错误 (/opt/nodejs/node_modules/aws-sdk/lib/protocol/json.js:51:27)

小智 10

你想在连接处理程序中使用 postToConnection 吗?websocket 连接仅在连接处理程序返回 statusCode 200创建。您不应在连接处理程序中使用 postToConnection。

  • 如何向刚刚连接的客户端发送消息?:) (4认同)

Jas*_*ngs 6

为了避免在无服务器上使用 websocket 时出现 410 问题,请不要忘记捕获异常:

export const ApiGatewayConnector = (event) => {

  const endpoint = process.env.IS_OFFLINE
            ? 'http://localhost:3001'
            : `${event.requestContext.domainName}/${event.requestContext.stage}`
            const apiVersion = '2018-11-29'
            return new AWS.ApiGatewayManagementApi({ apiVersion, endpoint })
}
Run Code Online (Sandbox Code Playgroud)

....

if (event.requestContext.stage == 'local') {
              await ApiGatewayConnector(event)
              .postToConnection({ ConnectionId, Data })
              .promise()
              .catch(_ => removeId(ConnectionId));<----- N.B. Remove disconnected IDs
            } else {
              await ws.send(Data, ConnectionId)
            }
}
        
Run Code Online (Sandbox Code Playgroud)