0

AWS で Web Socket を使用して API Gateway を作成しました。VertX が提供する HttpClient を使用して接続したいと考えています。クライアントバーティクルに次のコードを使用しています。

public class WebSocketClient extends AbstractVerticle {

// application address replaced by [address]
protected final String host = "[address].execute-api.us-east-1.amazonaws.com";
protected final String path = "/dev";
protected final int port = 80;
protected final String webSocketAddress = "wss://[address].execute-api.us-east-1.amazonaws.com/dev";

@Override
public void start() throws Exception {
    startClient(this.vertx);
}

protected void startClient(Vertx vertx) {
    HttpClient client = vertx.createHttpClient();
    client.webSocket(port, host, path, asyncWebSocket -> {
        if (asyncWebSocket.succeeded()) {
            WebSocket socket = asyncWebSocket.result();
            System.out.println("Successfully connected. Node closing.");
            socket.close().onFailure(throwable -> {
                throwable.printStackTrace();
            });
        } else {
            asyncWebSocket.cause().printStackTrace();

        }
    });
 }
}

ローカルホストで実行されている VertX サーバーでテストしているときに同じコードが機能するため、正しい WebSocketConnectionOptions の問題であると想定します。

HttpClient バーティクルを使用して AWS ソケットに接続しようとすると、「接続が拒否されました」というエラーが発生します。wscat を使用して接続すると、問題なく動作します。

どうもありがとうございました。

4

1 に答える 1