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 を使用したリアルタイム通信用のグラフィカル インターフェイスの実装に役立つことを願っています。
参考リンク:
以上がJava 9 で JavaFX と WebSocket を使用してリアルタイム通信用のグラフィカル インターフェイスを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。