Я изо всех сил пытался отправить ответ подключенным клиентам через URL-адрес обратного вызова с помощью aws (https://******.execute-api.us-east-1.amazonaws.com/test/@connections).
Естькод ниже в моем бэкэнде, чтобы отправить ответ, который является односторонней связью.
AwsClientBuilder.EndpointConfiguration config =
new AwsClientBuilder.EndpointConfiguration("https://*********.execute-api.us-east-1.amazonaws.com/test", "us-east-1");
AmazonApiGatewayManagementApi client = AmazonApiGatewayManagementApiClientBuilder.standard()
.withEndpointConfiguration(config).build();
PostToConnectionRequest request = new PostToConnectionRequest();
request.withConnectionId("bGYcWek5oAMCKwA=");
Charset charset = Charset.forName("UTF-8");
CharsetEncoder encoder = charset.newEncoder();
ByteBuffer buff = null;
try {
buff = encoder.encode(CharBuffer.wrap("Hello from lambda"));
} catch (CharacterCodingException e) {
log.error("Error while encoding", e);
}
request.withData(buff);
PostToConnectionResult result = client.postToConnection(request);
log.info("Result of websocket send:\n" + result);
Получение услуги : AmazonApiGatewayManagementApi;Код статуса: 403;Код ошибки: InvalidSignatureException исключение.
Примечание: У меня все настроено, как сертификаты и ключи доступа aws.
Как уже упоминалось в документе aws, я пыталсяс awscurl , который работает.Я могу видеть ответ на клиентах, подключенных к websocket.https://docs.amazonaws.cn/en_us/apigateway/latest/developerguide/apigateway-how-to-call-websocket-api-connections.html