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 を使用して接続すると、問題なく動作します。
どうもありがとうございました。