Search in sources :

Example 1 with Socket

use of io.socket.client.Socket in project socket.io-client-java by socketio.

the class Connection method main.

public static void main(String[] args) throws URISyntaxException {
    IO.Options options = new IO.Options();
    options.forceNew = true;
    final OkHttpClient client = new OkHttpClient();
    options.webSocketFactory = client;
    options.callFactory = client;
    final Socket socket = IO.socket("http://localhost:" + System.getenv("PORT"), options);
    socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {

        @Override
        public void call(Object... args) {
            System.out.println("connect");
            socket.close();
        }
    });
    socket.io().on(io.socket.engineio.client.Socket.EVENT_CLOSE, new Emitter.Listener() {

        @Override
        public void call(Object... args) {
            System.out.println("engine close");
            client.dispatcher().executorService().shutdown();
        }
    });
    socket.open();
}
Also used : Emitter(io.socket.emitter.Emitter) OkHttpClient(okhttp3.OkHttpClient) IO(io.socket.client.IO) Socket(io.socket.client.Socket)

Example 2 with Socket

use of io.socket.client.Socket in project socket.io-client-java by socketio.

the class ImmediateClose method main.

public static void main(String[] args) throws URISyntaxException {
    IO.Options options = new IO.Options();
    options.forceNew = true;
    final OkHttpClient client = new OkHttpClient();
    options.webSocketFactory = client;
    options.callFactory = client;
    final Socket socket = IO.socket("http://localhost:" + System.getenv("PORT"), options);
    socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {

        @Override
        public void call(Object... args) {
            System.out.println("connect");
        }
    }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {

        @Override
        public void call(Object... args) {
            System.out.println("disconnect");
        }
    });
    socket.io().on(io.socket.engineio.client.Socket.EVENT_CLOSE, new Emitter.Listener() {

        @Override
        public void call(Object... args) {
            System.out.println("engine close");
            client.dispatcher().executorService().shutdown();
        }
    });
    socket.connect();
    socket.disconnect();
}
Also used : Emitter(io.socket.emitter.Emitter) OkHttpClient(okhttp3.OkHttpClient) IO(io.socket.client.IO) Socket(io.socket.client.Socket)

Example 3 with Socket

use of io.socket.client.Socket in project ignite by apache.

the class AgentLauncher method main.

/**
 * @param args Args.
 */
public static void main(String[] args) throws Exception {
    log.info("Starting Apache Ignite Web Console Agent...");
    final AgentConfiguration cfg = new AgentConfiguration();
    JCommander jCommander = new JCommander(cfg);
    String osName = System.getProperty("os.name").toLowerCase();
    jCommander.setProgramName("ignite-web-agent." + (osName.contains("win") ? "bat" : "sh"));
    try {
        jCommander.parse(args);
    } catch (ParameterException pe) {
        log.error("Failed to parse command line parameters: " + Arrays.toString(args), pe);
        jCommander.usage();
        return;
    }
    String prop = cfg.configPath();
    AgentConfiguration propCfg = new AgentConfiguration();
    try {
        File f = AgentUtils.resolvePath(prop);
        if (f == null)
            log.warn("Failed to find agent property file: {}", prop);
        else
            propCfg.load(f.toURI().toURL());
    } catch (IOException e) {
        if (!AgentConfiguration.DFLT_CFG_PATH.equals(prop))
            log.warn("Failed to load agent property file: " + prop, e);
    }
    cfg.merge(propCfg);
    if (cfg.help()) {
        jCommander.usage();
        return;
    }
    System.out.println();
    System.out.println("Agent configuration:");
    System.out.println(cfg);
    System.out.println();
    if (cfg.tokens() == null) {
        String webHost;
        try {
            webHost = new URI(cfg.serverUri()).getHost();
        } catch (URISyntaxException e) {
            log.error("Failed to parse Ignite Web Console uri", e);
            return;
        }
        System.out.println("Security token is required to establish connection to the web console.");
        System.out.println(String.format("It is available on the Profile page: https://%s/profile", webHost));
        String tokens = String.valueOf(readPassword("Enter security tokens separated by comma: "));
        cfg.tokens(Arrays.asList(tokens.trim().split(",")));
    }
    URI uri = URI.create(cfg.serverUri());
    // Create proxy authenticator using passed properties.
    switch(uri.getScheme()) {
        case "http":
        case "https":
            final String username = System.getProperty(uri.getScheme() + ".proxyUsername");
            final char[] pwd = System.getProperty(uri.getScheme() + ".proxyPassword", "").toCharArray();
            Authenticator.setDefault(new Authenticator() {

                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, pwd);
                }
            });
            break;
        default:
    }
    IO.Options opts = new IO.Options();
    opts.path = "/agents";
    // Workaround for use self-signed certificate
    if (Boolean.getBoolean("trust.all")) {
        SSLContext ctx = SSLContext.getInstance("TLS");
        // Create an SSLContext that uses our TrustManager
        ctx.init(null, getTrustManagers(), null);
        opts.sslContext = ctx;
    }
    final Socket client = IO.socket(uri, opts);
    final RestExecutor restExecutor = new RestExecutor(cfg.nodeUri());
    try {
        final ClusterListener clusterLsnr = new ClusterListener(client, restExecutor);
        final DemoListener demoHnd = new DemoListener(client, restExecutor);
        Emitter.Listener onConnect = new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                log.info("Connection established.");
                JSONObject authMsg = new JSONObject();
                try {
                    authMsg.put("tokens", toJSON(cfg.tokens()));
                    authMsg.put("disableDemo", cfg.disableDemo());
                    String clsName = AgentLauncher.class.getSimpleName() + ".class";
                    String clsPath = AgentLauncher.class.getResource(clsName).toString();
                    if (clsPath.startsWith("jar")) {
                        String manifestPath = clsPath.substring(0, clsPath.lastIndexOf('!') + 1) + "/META-INF/MANIFEST.MF";
                        Manifest manifest = new Manifest(new URL(manifestPath).openStream());
                        Attributes attr = manifest.getMainAttributes();
                        authMsg.put("ver", attr.getValue("Implementation-Version"));
                        authMsg.put("bt", attr.getValue("Build-Time"));
                    }
                    client.emit("agent:auth", authMsg, new Ack() {

                        @Override
                        public void call(Object... args) {
                            if (args != null) {
                                if (args[0] instanceof String) {
                                    log.error((String) args[0]);
                                    System.exit(1);
                                }
                                if (args[0] == null && args[1] instanceof JSONArray) {
                                    try {
                                        List<String> activeTokens = fromJSON(args[1], List.class);
                                        if (!F.isEmpty(activeTokens)) {
                                            Collection<String> missedTokens = cfg.tokens();
                                            cfg.tokens(activeTokens);
                                            missedTokens.removeAll(activeTokens);
                                            if (!F.isEmpty(missedTokens)) {
                                                String tokens = F.concat(missedTokens, ", ");
                                                log.warn("Failed to authenticate with token(s): {}. " + "Please reload agent archive or check settings", tokens);
                                            }
                                            log.info("Authentication success.");
                                            clusterLsnr.watch();
                                            return;
                                        }
                                    } catch (Exception e) {
                                        log.error("Failed to authenticate agent. Please check agent\'s tokens", e);
                                        System.exit(1);
                                    }
                                }
                            }
                            log.error("Failed to authenticate agent. Please check agent\'s tokens");
                            System.exit(1);
                        }
                    });
                } catch (JSONException | IOException e) {
                    log.error("Failed to construct authentication message", e);
                    client.close();
                }
            }
        };
        DatabaseListener dbHnd = new DatabaseListener(cfg);
        RestListener restHnd = new RestListener(restExecutor);
        final CountDownLatch latch = new CountDownLatch(1);
        log.info("Connecting to: {}", cfg.serverUri());
        client.on(EVENT_CONNECT, onConnect).on(EVENT_CONNECT_ERROR, onError).on(EVENT_ERROR, onError).on(EVENT_DISCONNECT, onDisconnect).on(EVENT_LOG_WARNING, onLogWarning).on(EVENT_CLUSTER_BROADCAST_START, clusterLsnr.start()).on(EVENT_CLUSTER_BROADCAST_STOP, clusterLsnr.stop()).on(EVENT_DEMO_BROADCAST_START, demoHnd.start()).on(EVENT_DEMO_BROADCAST_STOP, demoHnd.stop()).on(EVENT_RESET_TOKENS, new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                String tok = String.valueOf(args[0]);
                log.warn("Security token has been reset: {}", tok);
                cfg.tokens().remove(tok);
                if (cfg.tokens().isEmpty()) {
                    client.off();
                    latch.countDown();
                }
            }
        }).on(EVENT_SCHEMA_IMPORT_DRIVERS, dbHnd.availableDriversListener()).on(EVENT_SCHEMA_IMPORT_SCHEMAS, dbHnd.schemasListener()).on(EVENT_SCHEMA_IMPORT_METADATA, dbHnd.metadataListener()).on(EVENT_NODE_VISOR_TASK, restHnd).on(EVENT_NODE_REST, restHnd);
        client.connect();
        latch.await();
    } finally {
        restExecutor.stop();
        client.close();
    }
}
Also used : Emitter(io.socket.emitter.Emitter) DemoListener(org.apache.ignite.console.agent.handlers.DemoListener) ClusterListener(org.apache.ignite.console.agent.handlers.ClusterListener) RestListener(org.apache.ignite.console.agent.handlers.RestListener) DatabaseListener(org.apache.ignite.console.agent.handlers.DatabaseListener) Attributes(java.util.jar.Attributes) URISyntaxException(java.net.URISyntaxException) URI(java.net.URI) URL(java.net.URL) JCommander(com.beust.jcommander.JCommander) ParameterException(com.beust.jcommander.ParameterException) List(java.util.List) Authenticator(java.net.Authenticator) PasswordAuthentication(java.net.PasswordAuthentication) DemoListener(org.apache.ignite.console.agent.handlers.DemoListener) IO(io.socket.client.IO) RestExecutor(org.apache.ignite.console.agent.rest.RestExecutor) Ack(io.socket.client.Ack) JSONArray(org.json.JSONArray) JSONException(org.json.JSONException) IOException(java.io.IOException) SSLContext(javax.net.ssl.SSLContext) DatabaseListener(org.apache.ignite.console.agent.handlers.DatabaseListener) Manifest(java.util.jar.Manifest) CountDownLatch(java.util.concurrent.CountDownLatch) ParameterException(com.beust.jcommander.ParameterException) URISyntaxException(java.net.URISyntaxException) JSONException(org.json.JSONException) ConnectException(java.net.ConnectException) SSLHandshakeException(javax.net.ssl.SSLHandshakeException) IOException(java.io.IOException) UnknownHostException(java.net.UnknownHostException) RestListener(org.apache.ignite.console.agent.handlers.RestListener) JSONObject(org.json.JSONObject) ClusterListener(org.apache.ignite.console.agent.handlers.ClusterListener) Collection(java.util.Collection) JSONObject(org.json.JSONObject) File(java.io.File) Socket(io.socket.client.Socket)

Example 4 with Socket

use of io.socket.client.Socket in project socket.io-client-java by socketio.

the class ConnectionFailure method main.

public static void main(String[] args) throws URISyntaxException {
    int port = Integer.parseInt(System.getenv("PORT"));
    port++;
    IO.Options options = new IO.Options();
    options.forceNew = true;
    options.reconnection = false;
    final OkHttpClient client = new OkHttpClient();
    options.webSocketFactory = client;
    options.callFactory = client;
    final Socket socket = IO.socket("http://localhost:" + port, options);
    socket.on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {

        @Override
        public void call(Object... args) {
            System.out.println("connect error");
            client.dispatcher().executorService().shutdown();
        }
    }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {

        @Override
        public void call(Object... args) {
            System.out.println("disconnect");
        }
    });
    socket.open();
}
Also used : Emitter(io.socket.emitter.Emitter) OkHttpClient(okhttp3.OkHttpClient) IO(io.socket.client.IO) Socket(io.socket.client.Socket)

Aggregations

IO (io.socket.client.IO)4 Socket (io.socket.client.Socket)4 Emitter (io.socket.emitter.Emitter)4 OkHttpClient (okhttp3.OkHttpClient)3 JCommander (com.beust.jcommander.JCommander)1 ParameterException (com.beust.jcommander.ParameterException)1 Ack (io.socket.client.Ack)1 File (java.io.File)1 IOException (java.io.IOException)1 Authenticator (java.net.Authenticator)1 ConnectException (java.net.ConnectException)1 PasswordAuthentication (java.net.PasswordAuthentication)1 URI (java.net.URI)1 URISyntaxException (java.net.URISyntaxException)1 URL (java.net.URL)1 UnknownHostException (java.net.UnknownHostException)1 Collection (java.util.Collection)1 List (java.util.List)1 CountDownLatch (java.util.concurrent.CountDownLatch)1 Attributes (java.util.jar.Attributes)1