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()
oderonClose()
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 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