ホームページ  >  記事  >  Java  >  Java 9 で JavaFX と WebSocket を使用してリアルタイム通信用のグラフィカル インターフェイスを実装する方法

Java 9 で JavaFX と WebSocket を使用してリアルタイム通信用のグラフィカル インターフェイスを実装する方法

王林
王林オリジナル
2023-07-30 10:54:191743ブラウズ

JavaFX と WebSocket を使用して Java 9 でリアルタイム通信用のグラフィカル インターフェイスを実装する方法

はじめに:
今日のインターネット時代において、リアルタイム通信は非常に重要な機能の 1 つです。たとえば、株式市場状況のリアルタイム更新、リアルタイム チャットなどです。この記事では、Java 9 で JavaFX と WebSocket を使用して、リアルタイム通信用のグラフィカル インターフェイスを実装する方法を紹介します。

パート 1: JavaFX の概要
JavaFX は、リッチ クライアント アプリケーションを構築するための Java ライブラリです。さまざまな視覚効果を簡単に作成できる強力なグラフィカル インターフェイスを提供します。

パート 2: WebSocket の概要
WebSocket は、クライアントとサーバー間のリアルタイムの双方向通信に使用されるテクノロジです。これにより、サーバーがクライアントにメッセージを積極的に送信できるようになり、リアルタイム通信を処理するためのシンプルなプロトコルが提供されます。

パート 3: JavaFX と WebSocket の組み合わせ
次に、JavaFX と WebSocket を組み合わせて、リアルタイム通信用のグラフィカル インターフェイスを実現する方法を見てみましょう。まず、JavaFX アプリケーションを作成し、WebSocket ライブラリをプロジェクトの依存関係に追加する必要があります。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javax.websocket.ClientEndpoint;
import javax.websocket.ContainerProvider;
import javax.websocket.OnMessage;
import javax.websocket.Session;
import javax.websocket.WebSocketContainer;

@ClientEndpoint
public class RealTimeApplication extends Application {

    private Session session;
    private TextArea messageArea;

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Real Time Application");

        VBox vbox = new VBox();

        messageArea = new TextArea();
        messageArea.setEditable(false);

        TextField inputField = new TextField();
        inputField.setOnAction(event -> {
            String message = inputField.getText();
            session.getAsyncRemote().sendText(message);
            inputField.setText("");
        });

        vbox.getChildren().addAll(messageArea, inputField);

        primaryStage.setScene(new Scene(vbox, 400, 300));
        primaryStage.show();

        connect();
    }

    @Override
    public void stop() {
        try {
            session.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @OnMessage
    public void onMessage(String message) {
        messageArea.appendText(message + "
");
    }

    private void connect() {
        try {
            WebSocketContainer container = ContainerProvider.getWebSocketContainer();
            session = container.connectToServer(this, new URI("ws://localhost:8080/ws"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上記のコードでは、「RealTimeApplication」という名前の JavaFX アプリケーションを作成し、メッセージを表示するための TextArea とメッセージを入力するための TextField を追加しました。ユーザーが TextField で Enter キーを押すと、WebSocket セッションを使用してサーバーにメッセージを送信します。サーバーからメッセージを受信すると、TextArea にメッセージを表示します。

パート 4: サーバー側のセットアップ
次に、クライアントからのメッセージを処理し、接続されているすべてのクライアントにメッセージをブロードキャストするようにサーバー側をセットアップする必要があります。ここでは、Spring Boot を使用して単純な WebSocket サーバーを作成します。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketTransportRegistration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Configuration
    @EnableWebSocketMessageBroker
    public static class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

        @Override
        public void configureWebSocketTransport(WebSocketTransportRegistration registration) {
            registration.setMessageSizeLimit(1024000);
        }

        @Override
        public void registerStompEndpoints(StompEndpointRegistry registry) {
            registry.addEndpoint("/ws").withSockJS();
        }
    }

    @ServerEndpoint(value = "/ws")
    public static class WebSocketServer {

        @OnMessage
        public void onMessage(Session session, String message) throws IOException, EncodeException {
            for (Session client : session.getOpenSessions()) {
                client.getBasicRemote().sendText(message);
            }
        }
    }
}

上記のコードでは、「WebSocketServer」という名前の WebSocket サーバーを作成し、@ServerEndpoint アノテーションを使用してそれを「/ws」エンドポイントにバインドします。クライアントからメッセージを受信すると、サーバーは接続されているすべてのクライアントにメッセージをブロードキャストします。

結論:
JavaFX と WebSocket を組み合わせることで、リアルタイム通信のためのグラフィカル インターフェイスを簡単に実装できます。リアルタイムの株式市場の最新情報を探している場合でも、ライブ チャットを探している場合でも、このテクノロジーは非常に役立ちます。この記事が、Java 9 で JavaFX と WebSocket を使用したリアルタイム通信用のグラフィカル インターフェイスの実装に役立つことを願っています。

参考リンク:

  • JavaFX 公式ドキュメント: https://openjfx.io/javadoc/12/
  • WebSocket 公式ドキュメント: https://www. w3.org/TR/websockets/
  • Spring Boot 公式ドキュメント: https://spring.io/projects/spring-boot

以上がJava 9 で JavaFX と WebSocket を使用してリアルタイム通信用のグラフィカル インターフェイスを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。