Cliente WebSocket en Java

Sheeraz Gul 12 octubre 2023
Cliente WebSocket en Java

Este tutorial demuestra cómo crear un cliente WebSocket en Java.

Cliente WebSocket en Java

Se puede usar un WebSocket para crear un canal de comunicación entre el cliente y el servidor. El protocolo WebSocket es compatible con HTTP utilizado para la comunicación web.

El protocolo WebSocket tiene dos mejoras para HTTP: primero, tiene una sobrecarga menor que HTTP y la segunda es la comunicación web bidireccional.

El cliente y el servidor son las partes de la comunicación WebSocket donde el cliente se usa para enviar y recibir datos, y el servidor se usa para la comunicación.

Intentemos crear un cliente usando WebSocket:

  • Primero, nuestra clase necesita ser anotada como un ClientEndpoint.
  • Luego, debemos crear un ClientManager y pedirle que se conecte al punto final anotado, que es nuestro cliente. El URI especificará el servidor.
  • Cuando se establezca la conexión, la lógica será similar al servidor.
  • Cuando se abre un método, se recibe un mensaje o una conexión cierra el método, se llamará automáticamente a onOpen(), onMessage() o onClose().

Aquí hay un ejemplo del cliente usando los puntos anteriores:

package delftstack;

import java.io.*;
import java.net.URI;
import javax.websocket.*;

@ClientEndpoint
public class Client_Endpoint {
  @OnOpen
  public void onOpen(Session Client_Session) {
    System.out.println("--- Connection Successful " + Client_Session.getId());
    try {
      Client_Session.getBasicRemote().sendText("Start");
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  @OnMessage
  public String onMessage(String Client_Message, Session Client_Session) {
    BufferedReader Buffered_Reader = new BufferedReader(new InputStreamReader(System.in));
    try {
      System.out.println("--- Message Received " + Client_Message);
      String User_Input = Buffered_Reader.readLine();
      return User_Input;
    } catch (IOException e) {
      throw new RuntimeException(e);
    }
  }

  @OnClose
  public void onClose(Session Client_Session, CloseReason Close_Reason) {
    System.out.println("--- Session ID: " + Client_Session.getId());
    System.out.println("--- Closing Reason: " + Close_Reason);
  }

  public static void main(String[] args) {
    ClientManager Client_Manager = ClientManager.createClient();
    try {
      URI uri = new URI("ws://localhost:8080");
      Client_Manager.connectToServer(MyClientEndpoint.class, uri);
      while (true) {
      }
    } catch (DeploymentException | URISyntaxException | InterruptedException e) {
      e.printStackTrace();
    }
  }
}

El código implementa un cliente para un sistema basado en chat. Cuando se abra la conexión, el cliente enviará un mensaje al servidor utilizando Client_Session.getBasicRemote().sendText().

El servidor recibirá el mensaje y responderá con la misma cadena. Esto hará que el método onMessage() se ejecute en el cliente.

El método onMessage() leerá el mensaje de la entrada del usuario en este sistema.

Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook