WebSocket in Java: Die Bibliothek Java-WebSocket für Echtzeitkommunikation

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

WebSocket in Java: Die Bibliothek Java-WebSocket



In der modernen Webentwicklung wird der Bedarf an bidirektionaler Echtzeitkommunikation immer wichtiger. Chat-Anwendungen, Online-Spiele, Börsenkurse, Benachrichtigungen – all dies erfordert eine sofortige Datenübertragung zwischen Client und Server. Für Java ist eine der beliebtesten und zuverlässigsten Implementierungen des WebSocket-Protokolls die Bibliothek Java-WebSocket (auch bekannt als nv-websocket-client).



In diesem Artikel werden wir im Detail besprechen, wie man Java-WebSocket zur Erstellung von Server- und Client-Anwendungen verwendet, Codebeispiele liefern und Best Practices betrachten.



Was ist Java-WebSocket?



Java-WebSocket ist eine leichtgewichtige, leistungsstarke Open-Source-Bibliothek, die das WebSocket-Protokoll (RFC 6455) implementiert. Sie ermöglicht Java-Entwicklern, sowohl WebSocket-Server als auch WebSocket-Clients einfach zu erstellen, ohne sich mit den niedrigen Details des Protokolls befassen zu müssen.



Hauptfunktionen der Bibliothek:

  • Vollständige Unterstützung der Server- und Client-Seite von WebSocket.
  • Unterstützung von WSS (WebSocket Secure) über SSL/TLS.
  • Automatische Wiederverbindung bei Verbindungsabbruch.
  • Verarbeitung fragmentierter Nachrichten.
  • Unterstützung benutzerdefinierter Erweiterungen.
  • Einfache ereignisbasierte API (onOpen, onMessage, onClose, onError).


Installation und Einbindung



Fügen Sie zur Nutzung der Bibliothek die folgende Abhängigkeit in Ihre pom.xml (Maven) ein:



<dependency>    <groupId>org.java-websocket</groupId>    <artifactId>Java-WebSocket</artifactId>    <version>1.5.4</version></dependency>


Wenn Sie Gradle verwenden:



implementation 'org.java-websocket:Java-WebSocket:1.5.4'


Erstellen eines WebSocket-Servers



Betrachten wir ein einfaches Beispiel eines WebSocket-Servers, der Nachrichten empfängt und an alle verbundenen Clients zurücksendet (Echo-Server):



import org.java_websocket.WebSocket;import org.java_websocket.handshake.ClientHandshake;import org.java_websocket.server.WebSocketServer;import java.net.InetSocketAddress;import java.util.Set;

public class EchoServer extends WebSocketServer {

public EchoServer(int port) { super(new InetSocketAddress(port)); }

@Override public void onOpen(WebSocket conn, ClientHandshake handshake) { System.out.println("Neue Verbindung: " + conn.getRemoteSocketAddress()); }

@Override public void onClose(WebSocket conn, int code, String reason, boolean remote) { System.out.println("Trennung: " + conn.getRemoteSocketAddress() + " (" + reason + ")"); }

@Override public void onMessage(WebSocket conn, String message) { System.out.println("Nachricht empfangen: " + message); // Sende die Nachricht an alle Clients zurück Set<WebSocket> connections = getConnections(); for (WebSocket client : connections) { client.send("Echo: " + message); } }

@Override public void onError(WebSocket conn, Exception ex) { System.err.println("Fehler: " + ex.getMessage()); if (conn != null) { conn.close(); } }

@Override public void onStart() { System.out.println("Server gestartet auf Port " + getPort()); }

public static void main(String[] args) { int port = 8887; EchoServer server = new EchoServer(port); server.start(); }}


Dieser Server startet auf Port 8887 und sendet bei Empfang einer Nachricht diese mit dem Präfix "Echo: " an alle verbundenen Clients zurück.



Erstellen eines WebSocket-Clients



Schreiben wir nun einen Client, der eine Verbindung zu unserem Server herstellt

Empfehlungen