[Java EE] Implementieren Sie den Client mit WebSocket

Vor kurzem wurde der Qiita-Artikel zu einem Fortschrittsbericht. Diesmal ist es eine Fortsetzung des Artikels hier.

Hinzufügung von Tyrus-Standalone-Client

Wenn ich ein Client-Programm normal schreibe und ausführe, wird der folgende Fehler angezeigt.

Exception in thread "main" java.lang.RuntimeException: Could not find an implementation class.
	at javax.websocket.ContainerProvider.getWebSocketContainer(ContainerProvider.java:73)
	at Main.main(Main.java:46)

Laut stackoverrun bietet websocket die Client-Schnittstelle, nicht jedoch die Implementierung. Daher werden wir Tyrus-Standalone-Client in Glassfish einführen. Implementieren von WebSocketContainer in der StandardWebSocketClient-Klasse

Fügen Sie es insbesondere zu den Abhängigkeiten von build.gradle hinzu.

dependencies {
    //Ich habe es letztes Mal erklärt
    compileOnly 'javax:javaee-api:8.0'
    //Dies werde ich dieses Mal hinzufügen
    compile group: 'org.glassfish.tyrus.bundles', name: 'tyrus-standalone-client', version: '1.14'
}

Schreiben Sie ClientEndPoint

Jetzt schreiben wir das Programm dieses Mal sofort. -> src-> main-> Erstellen Sie eine Java-Datei in (entsprechendes Paket) in Java.


import javax.websocket.*;
import java.net.URI;
import java.util.Scanner;

//Mit dieser Anmerkung wird sie als Endpunkt des Clients erkannt
@ClientEndpoint
public class Client {

    public Client() {
        super();
    }

    //Verarbeitung beim Einrichten einer Sitzung
    @OnOpen
    public void onOpen(Session session) {
        System.out.println("[Sitzungsaufbau]");
    }

    //Verarbeitung beim Empfang einer Nachricht
    @OnMessage
    public void onMessage(String message) {
        System.out.println("[Erhalten]:" + message);
    }

    //Verarbeitung beim Empfang einer Nachricht
    @OnError
    public void onError(Throwable th) {
        System.err.println(th.getMessage());
    }

    //Verarbeitung beim Freigeben einer Sitzung
    @OnClose
    public void onClose(Session session) {
        System.out.println("[Trennen]");
    }

    static public void main(String[] args) throws Exception {

        //Rufen Sie das WebSocket-Containerobjekt zur Initialisierung ab
        WebSocketContainer container = ContainerProvider
                .getWebSocketContainer();
        //Server-Endpunkt-URI
        URI uri = URI
                .create("ws://localhost:8080/<Projektname>/<Verknüpfung>");
        //Richten Sie eine Sitzung mit dem Serverendpunkt ein
        //Suchen Sie auf dem laufenden Client nach derselben Klasse, die im Argument übergeben wurde, und stellen Sie eine Verbindung her.
        Session session = container.connectToServer(Client.class, uri);

        while (!session.isOpen()) {
            Thread.sleep(500);
        }

        System.out.println("open");

        try (Scanner s = new Scanner(System.in)) {
            String str;
            System.out.println("start loop");
            while (true) {
                str = s.nextLine();
                if(str.equals("exit")) break;
                //Senden Sie den Inhalt von str
                session.getBasicRemote().sendText(str);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

Da es problematisch ist, habe ich dieses Mal main in der Endpoint-Klasse geschrieben, aber ich denke, es ist besser, es zu trennen.

Lauf

Starten Sie zuerst den Server mit dem Client mit tomcatRun usw. und führen Sie main in einem anderen Fenster aus.

Recommended Posts

[Java EE] Implementieren Sie den Client mit WebSocket
Aktivieren Sie Java EE mit NetBeans 9
API-Integration von Java mit Jersey Client
One-JAR Java EE-Anwendung mit WebSphere Liberty
Java EE Test (CDI / Interceptor) mit Arquillian
Probieren wir WebSocket mit Java und Javascript aus!
Java mqtt Client
Erstellen Sie eine E2E-Testumgebung mit Selenium (Java).
Versuchen Sie, TCP / IP + NIO mit JAVA zu implementieren
Ich habe versucht, TCP / IP + BIO mit JAVA zu implementieren
Wechseln Sie die Plätze mit Java
Installieren Sie Java mit Ansible
Probieren Sie WebSocket mit Jooby aus
Bequemer Download mit JAVA
Schalten Sie Java mit direnv
Implementieren Sie Singleton mit Enum schnell in Java
Implementieren Sie den API-Client mit nur Anmerkungen unter Verwendung von Feign (OpenFeign).
Ich habe versucht, Sterling Sort mit Java Collector zu implementieren
Java-Download mit Ansible
Lass uns mit Java kratzen! !!
Erstellen Sie Java mit Wercker
Serverloses Java EE beginnend mit Quarkus und Cloud Run
Endian-Konvertierung mit JAVA
Ich habe versucht, eine Java EE-Anwendung mit OpenShift zu modernisieren.
Dies ist in Ordnung. WebSocket: Server = Java, Client = Java, JavaScript
Ich möchte verschiedene Funktionen mit Kotlin und Java implementieren!
(Java) Einfache BDD mit Spektrum?
Verwenden Sie Lambda-Ebenen mit Java
Erstellen Sie mit Gradle ein Java-Multiprojekt
Erste Schritte mit Java Collection
Java-Konfiguration mit Spring MVC
Grundlegende Authentifizierung mit Java 11 HttpClient
Spielen Sie mit dem Jersey OAuth 2-Client
Experimentieren wir mit der Java-Inline-Erweiterung
Führen Sie Batch mit Docker-Compose mit Java-Batch aus
[Vorlage] MySQL-Verbindung mit Java
Schreiben Sie Java Try-Catch mit Optional neu
Installieren Sie Java 7 mit Homebrew (Fass)
[Java] JSON-Kommunikation mit Jackson
Implementieren Sie GraphQL mit Spring Boot
Java zum Spielen mit Function
GraphQL Client beginnend mit Ruby
Versuchen Sie eine DB-Verbindung mit Java
[Java] JavaConfig mit statischer innerer Klasse
Versuchen Sie gRPC mit Java, Maven
Lassen Sie uns Excel mit Java betreiben! !!
Implementierung der zweistufigen Authentifizierung in Java
Java-Versionsverwaltung mit SDKMAN
RSA-Verschlüsselung / Entschlüsselung mit Java 8
Paging PDF mit Java + PDFBox.jar
Sortieren Sie Zeichenfolgen als charakteristische Funktion mit Java
Objektorientiert mit Strike Gundam (Java)
Implementieren Sie die Standardauthentifizierung in Java
jCaptcha-Reload mit Ajax implementiert
[Java] Inhaltserfassung mit HttpCliient
Java-Versionsverwaltung mit jenv
Implementieren Sie eine Kombination aus Mathematik in Java
Fehlerbehebung mit Java Flight Recorder
Optimieren Sie Java-Tests mit Spock
2 Implementieren Sie eine einfache Syntaxanalyse in Java
Stellen Sie mit Java eine Verbindung zur Datenbank her