AWS - Использование URL обратного вызова веб-сокета @connections для отправки ответа от внутреннего сервера (односторонний) - протокол веб-сокета API-шлюза - PullRequest
1 голос
/ 11 июня 2019

Я изо всех сил пытался отправить ответ подключенным клиентам через 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

...