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
Auch in der Bibliothek
HTML-Parsing in C# (.NET): Bibliotheken HtmlAgilityPack und AngleSharp
Arbeiten mit CSV in PHP: Die Bibliothek SplFileObject und integrierte Funktionen
Drogon C++ Framework: Vollständiges Tutorial mit Beispielen