WebSocket-Client in Java

Sheeraz Gul 12 Oktober 2023
WebSocket-Client in Java

Dieses Tutorial zeigt, wie Sie einen WebSocket-Client in Java erstellen.

WebSocket-Client in Java

Ein WebSocket kann verwendet werden, um einen Kommunikationskanal zwischen Client und Server herzustellen. Das WebSocket-Protokoll ist mit HTTP kompatibel, das für die Webkommunikation verwendet wird.

Das WebSocket-Protokoll hat zwei Verbesserungen gegenüber HTTP: Erstens hat es einen geringeren Overhead als HTTP, und zweitens ist die bidirektionale Webkommunikation.

Client und Server sind die Teile der WebSocket-Kommunikation, bei denen der Client zum Senden und Empfangen von Daten und der Server zur Kommunikation verwendet wird.

Versuchen wir, einen Client mit dem WebSocket zu erstellen:

  • Zuerst muss unsere Klasse als ClientEndpoint annotiert werden.
  • Dann müssen wir einen ClientManager erstellen und ihn bitten, sich mit dem annotierten Endpunkt zu verbinden, der unser Client ist. Der URI gibt den Server an.
  • Wenn die Verbindung hergestellt wird, ähnelt die Logik der des Servers.
  • Wenn eine Methode geöffnet wird, eine Nachricht empfangen wird oder eine Verbindung die Methode schließt, wird automatisch onOpen(), onMessage() oder onClose() aufgerufen.

Hier ist ein Beispiel für den Client, der die obigen Punkte verwendet:

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();
    }
  }
}

Der Code implementiert einen Client für ein Chat-basiertes System. Wenn die Verbindung geöffnet wird, sendet der Client eine Nachricht mit Client_Session.getBasicRemote().sendText() an den Server.

Der Server empfängt die Nachricht und antwortet mit der gleichen Zeichenfolge. Dadurch wird die Methode onMessage() im Client ausgeführt.

Die Methode onMessage() liest die Nachricht aus der Benutzereingabe in diesem System.

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