Search in sources :

Example 1 with HydraSessionListener

use of de.datasecs.hydra.shared.handler.listener.HydraSessionListener in project Hydra by DataSecs.

the class ExampleSerializationClient method main.

public static void main(String[] args) {
    HydraClient client = new Client.Builder("localhost", 8888, new SampleProtocol()).workerThreads(4).option(ChannelOption.TCP_NODELAY, true).option(ChannelOption.SO_KEEPALIVE, true).addSessionListener(new HydraSessionListener() {

        @Override
        public void onConnected(Session session) {
            System.out.println("Connected to server!");
        }

        @Override
        public void onDisconnected(Session session) {
            System.out.println("\nDisconnected from server!");
        }
    }).build();
    if (client.isConnected()) {
        session = client.getSession();
        System.out.println("\nClient is online!");
        System.out.printf("Socket address: %s%n", session.getAddress());
    }
    // Create custom classes and necessary stuff for example serialization
    List<String> testStringList = new ArrayList<>();
    testStringList.add("Hydra");
    testStringList.add("Serialization");
    testStringList.add("Test");
    CustomClassExtended customClassExtended = new CustomClassExtended("testStringExtended", UUID.randomUUID(), 5L, Integer.class);
    CustomClass customClass = new CustomClass("testString", 1, new String[] { "Hydra", "serialization" }, testStringList, "this is a random object", customClassExtended);
    // Sends the instance of a custom class, that is create and filled with data above
    session.send(new SampleSerializationPacket(customClass));
}
Also used : HydraClient(de.datasecs.hydra.client.HydraClient) SampleSerializationPacket(client.packets.SampleSerializationPacket) ArrayList(java.util.ArrayList) HydraClient(de.datasecs.hydra.client.HydraClient) Client(de.datasecs.hydra.client.Client) HydraSessionListener(de.datasecs.hydra.shared.handler.listener.HydraSessionListener) SampleProtocol(client.SampleProtocol) Session(de.datasecs.hydra.shared.handler.Session)

Example 2 with HydraSessionListener

use of de.datasecs.hydra.shared.handler.listener.HydraSessionListener in project Hydra by DataSecs.

the class ExampleServer method main.

public static void main(String[] args) {
    /*
         * The session listener adds a listener to the server that is supposed to be called when
         * a session is created (in this case, when a client connects). For demonstration purposes
         * this is done via a direct instantiation (anonymous class). It is advised to do this in a separate class
         * for clearness, especially when there are other methods than just the two small from the
         * SessionListener interface.
         */
    // The builder returns a server which you can use for several things
    HydraServer server = new Server.Builder("localhost", 8888, new SampleProtocol()).bossThreads(2).workerThreads(4).option(ChannelOption.TCP_NODELAY, true).option(ChannelOption.SO_KEEPALIVE, true).childOption(ChannelOption.TCP_NODELAY, true).childOption(ChannelOption.SO_KEEPALIVE, true).addListener(new HydraSessionListener() {

        @Override
        public void onConnected(Session session) {
            System.out.println("\nClient connected!");
        }

        @Override
        public void onDisconnected(Session session) {
            System.out.println("\nClient disconnected!");
        }
    }).build();
    // Check if server is actively running (not obligatory)
    if (server.isActive()) {
        System.out.println("Server is online!");
        // Returns the local address of the server that was set in the constructor
        System.out.printf("Socket address: %s%n", server.getLocalAdress());
    }
    // As soon as a channel with a client is initialized it is added to the set of sessions
    // If no clients are connected the set is empty
    System.out.println("Sessions: " + server.getSessions());
// Closes the server and releases the occupied resources
// server.close();
}
Also used : HydraServer(de.datasecs.hydra.server.HydraServer) HydraSessionListener(de.datasecs.hydra.shared.handler.listener.HydraSessionListener) Session(de.datasecs.hydra.shared.handler.Session)

Example 3 with HydraSessionListener

use of de.datasecs.hydra.shared.handler.listener.HydraSessionListener in project Hydra by DataSecs.

the class ExampleSerializationServer method main.

public static void main(String[] args) {
    HydraServer server = new Server.Builder("localhost", 8888, new SampleProtocol()).bossThreads(2).workerThreads(4).option(ChannelOption.TCP_NODELAY, true).option(ChannelOption.SO_KEEPALIVE, true).childOption(ChannelOption.TCP_NODELAY, true).childOption(ChannelOption.SO_KEEPALIVE, true).addListener(new HydraSessionListener() {

        @Override
        public void onConnected(Session session) {
            System.out.println("\nClient connected!");
        }

        @Override
        public void onDisconnected(Session session) {
            System.out.println("\nClient disconnected!");
        }
    }).build();
    if (server.isActive()) {
        System.out.println("Server is online!");
        // Returns the local address of the server that was set in the constructor
        System.out.printf("Socket address: %s%n", server.getLocalAdress());
    }
}
Also used : HydraServer(de.datasecs.hydra.server.HydraServer) HydraSessionListener(de.datasecs.hydra.shared.handler.listener.HydraSessionListener) SampleProtocol(server.SampleProtocol) Session(de.datasecs.hydra.shared.handler.Session)

Example 4 with HydraSessionListener

use of de.datasecs.hydra.shared.handler.listener.HydraSessionListener in project Hydra by DataSecs.

the class ChatServer method main.

public static void main(String[] args) {
    HydraServer hydraServer = new Server.Builder("localhost", 8888, new ChatServerProtocol()).addListener(new HydraSessionListener() {

        @Override
        public void onConnected(Session session) {
            System.out.printf("User with ip %s connected!%n", session.getAddress());
            session.send(new ServerPacket("Welcome at localhost user!"));
            for (Session s : sessions) {
                if (!s.equals(session)) {
                    s.send(new ServerPacket("Client with ip " + session.getAddress() + " connected to the chat!"));
                }
            }
            sessions.add(session);
        }

        @Override
        public void onDisconnected(Session session) {
            System.out.printf("User with ip %s disconnected!%n", session.getAddress());
            for (Session s : sessions) {
                if (!s.equals(session)) {
                    s.send(new ServerPacket("Client with ip " + session.getAddress() + " left the chat!"));
                }
            }
            sessions.remove(session);
        }
    }).option(ChannelOption.SO_BACKLOG, 200).childOption(ChannelOption.TCP_NODELAY, true).childOption(ChannelOption.SO_KEEPALIVE, true).build();
    System.out.println("Server started!");
}
Also used : ServerPacket(de.datasecs.hydra.example.shared.chat.ServerPacket) Server(de.datasecs.hydra.server.Server) HydraServer(de.datasecs.hydra.server.HydraServer) HydraServer(de.datasecs.hydra.server.HydraServer) HydraSessionListener(de.datasecs.hydra.shared.handler.listener.HydraSessionListener) Session(de.datasecs.hydra.shared.handler.Session)

Example 5 with HydraSessionListener

use of de.datasecs.hydra.shared.handler.listener.HydraSessionListener in project Hydra by DataSecs.

the class ExampleClient method main.

public static void main(String[] args) {
    /*
         * The session listener is optional, that's why it's a method that may be called in the builder.
         * It adds a listener to the client and is supposed to be called when
         * a session is created (in this case, when the client connects to a server). For demonstration purposes
         * this is done via a direct instantiation (anonymous class). It's advised to do this in a separate class
         * for clearness, especially when there are other methods than just the two small from the
         * SessionListener interface.
         */
    // The builder returns a session which you can use for several things
    HydraClient client = new Client.Builder("localhost", 8888, new ExampleClientProtocol()).workerThreads(4).option(ChannelOption.TCP_NODELAY, true).option(ChannelOption.SO_KEEPALIVE, true).addSessionListener(new HydraSessionListener() {

        @Override
        public void onConnected(Session session) {
            System.out.println("Connected to server!");
        }

        @Override
        public void onDisconnected(Session session) {
            System.out.println("\nDisconnected from server!");
        }
    }).build();
    // Checks if the client is connected to its remote host (not obligatory)
    if (client.isConnected()) {
        // Returns the session that was created for the client and its remote host
        session = client.getSession();
        System.out.println("\nClient is online!");
        System.out.printf("Socket address: %s%n", session.getAddress());
    }
    /* Send a packet to the server via the session the client has saved */
    // Sends a String, that is converted to a Object and an array, the type of the array is defined in ExamplePacket.class
    session.send(new ExamplePacket("This is a message", new String[] { "This", "is", "a", "message in an array" }));
    // Sends a list, that is converted to a Object and the array, like above
    session.send(new ExamplePacket(Arrays.asList("This", "is", "a", "message", "in a list"), new String[] { "This", "is", "a", "message", "in an array" }));
    /* Sends an object the user wants to send with the limitation that the object has to be serializable.
         * Hydra internally uses a standard packet that comes ready out of the box. The only thing that is important to notice
         * is the fact, that the Handler for the packet still has to be created by the user itself. Therefore see
         * the ExampleClientPacketListener of the server example classes.
         */
    session.send("This is a String and dealt with as object by Hydra");
// Closes the connection and releases all occupied resources
// client.close();
}
Also used : HydraClient(de.datasecs.hydra.client.HydraClient) ExamplePacket(de.datasecs.hydra.example.shared.ExamplePacket) HydraClient(de.datasecs.hydra.client.HydraClient) Client(de.datasecs.hydra.client.Client) HydraSessionListener(de.datasecs.hydra.shared.handler.listener.HydraSessionListener) Session(de.datasecs.hydra.shared.handler.Session)

Aggregations

Session (de.datasecs.hydra.shared.handler.Session)11 HydraSessionListener (de.datasecs.hydra.shared.handler.listener.HydraSessionListener)11 Client (de.datasecs.hydra.client.Client)5 HydraClient (de.datasecs.hydra.client.HydraClient)5 HydraServer (de.datasecs.hydra.server.HydraServer)5 ServerPacket (de.datasecs.hydra.example.shared.chat.ServerPacket)2 ArrayList (java.util.ArrayList)2 SampleProtocol (client.SampleProtocol)1 SamplePacket (client.packets.SamplePacket)1 SampleSerializationPacket (client.packets.SampleSerializationPacket)1 TestClientProtocol (de.datasecs.hydra.client.TestClientProtocol)1 ExamplePacket (de.datasecs.hydra.example.shared.ExamplePacket)1 MessagePacket (de.datasecs.hydra.example.shared.chat.MessagePacket)1 CustomClass (de.datasecs.hydra.example.shared.serialization.CustomClass)1 CustomClassExtended (de.datasecs.hydra.example.shared.serialization.CustomClassExtended)1 ExampleSerializationPacket (de.datasecs.hydra.example.shared.serialization.ExampleSerializationPacket)1 Server (de.datasecs.hydra.server.Server)1 TestServerProtocol (de.datasecs.hydra.server.TestServerProtocol)1 BufferedReader (java.io.BufferedReader)1 IOException (java.io.IOException)1