javanode.jseventsemitemitter

Event Emitter in Java


I am currently converting a NodeJS project to Java. At the moment I am detained in a problem that I have not found a solution. In my Node project, I have a function that works with EventEmitter(require('events')) and Net Sockets (require("net")), and uses the "emit" functions to send messages and "on" to receive. How can I do the same in Java ???


Solution

  • Maybe you will need some like this:

    Server side:

    import java.io.*;
    
    public class Conex {
    
    final int PUERTO=5000;
    
    ServerSocket sc;
    
    Socket so;
    
    DataOutputStream salida;
    
    String mensajeRecibido;
    
    //SERVIDOR
    
    public void initServer()
    
    {
    
    BufferedReader entrada;
    
    try
    
    {
    
    sc = new ServerSocket(PUERTO );/* crea socket servidor que escuchara en puerto 5000*/
    
    so=new Socket();
    
    System.out.println("Esperando una conexión:");
    
    so = sc.accept();</pre>
    <pre class="brush:java">//Inicia el socket, ahora esta esperando una conexión por parte del cliente
    
    System.out.println("Un cliente se ha conectado.");
    
    //Canales de entrada y salida de datos
    
    entrada = new BufferedReader(new InputStreamReader(so.getInputStream()));
    
    salida = new DataOutputStream(so.getOutputStream());
    
    System.out.println("Confirmando conexion al cliente....");
    
    salida.writeUTF("Conexión exitosa...n envia un mensaje :D");
    
    //Recepcion de mensaje
    
    mensajeRecibido = entrada.readLine();
    
    System.out.println(mensajeRecibido);
    
    salida.writeUTF("Se recibio tu mensaje.n Terminando conexion...");
    
    salida.writeUTF("Gracias por conectarte, adios!");
    
    System.out.println("Cerrando conexión...");
    
    sc.close();//Aqui se cierra la conexión con el cliente
    
    }catch(Exception e )
    
    {
    
    System.out.println("Error: "+e.getMessage());
    
    }
    
    }
    
    }
    

    Client side:

    import java.io.*;
    
    public class Conex {
    
    final String HOST = "localhost";
    
    final int PUERTO=5000;
    
    Socket sc;
    
    DataOutputStream mensaje;
    
    DataInputStream entrada;
    
    //Cliente
    
    public void initClient() /*ejecuta este metodo para correr el cliente */
    
    {
    
    try
    
    {
    
    sc = new Socket( HOST , PUERTO ); /*conectar a un servidor en localhost con puerto 5000*/
    
    //creamos el flujo de datos por el que se enviara un mensaje
    
    mensaje = new DataOutputStream(sc.getOutputStream());
    
    //enviamos el mensaje
    
    mensaje.writeUTF("hola que tal!!");
    
    //cerramos la conexión
    
    sc.close();
    
    }catch(Exception e )
    
    {
    
    System.out.println("Error: "+e.getMessage());
    
    }
    
    }
    
    }