首頁 Java java教程 如何在Java 9中使用JavaFX和WebSockets來實現即時通訊的圖形介面

如何在Java 9中使用JavaFX和WebSockets來實現即時通訊的圖形介面

Jul 30, 2023 am 10:54 AM
websockets 即時通訊 javafx

如何在Java 9中使用JavaFX和WebSockets來實現即時通訊的圖形介面

引言:
在當今網路時代,即時通訊是非常重要的功能之一。例如,即時更新股市行情、即時聊天等。本文將介紹如何使用Java 9中的JavaFX和WebSockets來實現即時通訊的圖形介面。

第一部分:JavaFX簡介
JavaFX是一種用於建立富客戶端應用程式的Java庫。它提供了強大的圖形介面,可以輕鬆創建各種視覺效果。

第二部分:WebSockets簡介
WebSockets是一種用於在客戶端和伺服器之間進行即時雙向通訊的技術。它允許伺服器主動發送訊息給客戶端,並提供了一種簡單的協定來處理即時通訊。

第三部分:JavaFX和WebSockets的結合
現在讓我們來看看如何將JavaFX和WebSockets結合起來,實現即時通訊的圖形介面。首先,我們需要建立一個JavaFX應用程序,並將WebSockets庫新增到專案的依賴中。

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鍵時,我們使用WebSockets的會話傳送訊息到伺服器。當收到來自伺服器的訊息時,我們將在TextArea中顯示它。

第四部分:伺服器端設定
接下來,我們需要設定伺服器端來處理來自客戶端的訊息並將其廣播給所有連接的客戶端。在這裡,我們使用Spring Boot來創建一個簡單的WebSockets伺服器。

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和WebSockets,我們可以輕鬆地實現一個即時通訊的圖形介面。無論您是為了即時更新股市行情還是即時聊天,這種技術都是非常有用的。希望本文對您在Java 9中利用JavaFX和WebSockets實現即時通訊的圖形介面有所幫助。

參考連結:

  • JavaFX官方文件:https://openjfx.io/javadoc/12/
  • WebSocket官方文件:https://www. w3.org/TR/websockets/
  • Spring Boot官方文件:https://spring.io/projects/spring-boot

以上是如何在Java 9中使用JavaFX和WebSockets來實現即時通訊的圖形介面的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用PHP和WebSocket實現即時通信 如何使用PHP和WebSocket實現即時通信 Dec 17, 2023 pm 10:24 PM

隨著網路科技的不斷發展,即時通訊已經成為了日常生活中不可或缺的一部分。利用WebSockets技術可以實現高效、低延遲的即時通信,而PHP作為互聯網領域使用最廣泛的開發語言之一,也提供了相應的WebSocket支援。本文將為大家介紹如何使用PHP和WebSocket實現即時通信,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單

JavaFX提供的各種2D形狀有哪些? JavaFX提供的各種2D形狀有哪些? Sep 03, 2023 pm 09:41 PM

以下是您可以使用JavaFX繪製的各種幾何形狀線-一條線是連接兩點的幾何結構。 javafx.scene.shape。 Line類別表示XY平面中的一條線。矩形-矩形是一個四邊多邊形,具有兩對平行且並發的邊,所有內角均為直角。 javafx.scene。 Rectangle類別表示XY平面中的矩形。 Circle-圓是一條形成閉環的線,其上的每個點都距離中心點有固定的距離。 javafx.scene。 Circle類別表示XY平面中的圓。橢圓-橢圓由兩個點定義,每個點稱為焦點。若取橢圓上的任一點,到焦點的距離總和

如何使用Nginx Proxy Manager實作Websockets代理 如何使用Nginx Proxy Manager實作Websockets代理 Sep 27, 2023 pm 01:46 PM

如何使用NginxProxyManager實作Websockets代理Websockets是一種即時通訊協議,適用於需要雙向通訊的應用程式。而NginxProxyManager(簡稱NPM)是一個基於Nginx的代理伺服器,可以用來管理和設定多個反向代理的資源。本文將介紹如何使用NPM來實作Websockets代理,並提供具體的程式碼範例。安裝NPM首

使用Java 13中的新的JavaFX WebView元件來顯示網頁內容 使用Java 13中的新的JavaFX WebView元件來顯示網頁內容 Aug 01, 2023 pm 01:09 PM

使用Java13中的新的JavaFXWebView元件來顯示網頁內容隨著Java的不斷發展,JavaFX已成為建立跨平台圖形介面的主要工具之一。 JavaFX提供了豐富的圖形庫和元件,讓開發者能夠輕鬆地創建各種各樣的使用者介面。其中,JavaFXWebView元件是一個非常有用的元件,它允許我們在JavaFX應用程式中顯示網頁內容。在Java13中,J

Java Websocket開發指南:如何實現客戶端與伺服器端的即時通訊 Java Websocket開發指南:如何實現客戶端與伺服器端的即時通訊 Dec 02, 2023 am 11:52 AM

JavaWebsocket開發指南:如何實現客戶端與伺服器端的即時通信,需要具體程式碼範例隨著Web應用程式的不斷發展,即時通訊已成為專案中必不可少的一部分。在傳統的HTTP協定中,客戶端會向伺服器發送請求,只有在收到回應之後才能得到數據,這導致客戶端需要不斷地輪詢(polling)伺服器以獲取最新數據,這樣會導致效能和效率問題。而WebSocket則是為了解

如何使用PHP進行伺服器端推送和即時通信 如何使用PHP進行伺服器端推送和即時通信 Aug 02, 2023 am 09:33 AM

如何使用PHP進行伺服器端推送和即時通訊隨著技術的不斷發展和互聯網的普及,即時通訊在Web應用中變得越來越重要。伺服器端推送和即時通訊使得開發者能夠向客戶端發送即時更新的數據,以及與客戶端進行交互,而不需要客戶端主動向伺服器請求數據。在PHP開發中,我們可以使用一些技術來實現伺服器端推送和即時通信,如:WebSocket、LongPolling、Serve

如何在Java 9中使用JavaFX和WebSocket實現即時通訊的圖形介面 如何在Java 9中使用JavaFX和WebSocket實現即時通訊的圖形介面 Jul 30, 2023 pm 04:57 PM

如何在Java9中使用JavaFX和WebSocket實現即時通訊的圖形介面引言:隨著網路的發展,即時通訊的需求越來越普遍。在Java9中,我們可以使用JavaFX和WebSocket技術來實現具有圖形介面的即時通訊應用。本文將介紹如何在Java9中使用JavaFX和WebSocket技術來實現即時通訊的圖形介面,並附上對應的程式碼範例。第一部分:Ja

如何使用Java開發一個基於WebSocket的即時通訊應用 如何使用Java開發一個基於WebSocket的即時通訊應用 Sep 20, 2023 am 11:03 AM

如何使用Java開發一個基於WebSocket的即時通訊應用在現代Web應用中,即時通訊已經成為了一個必備的功能。 WebSocket技術在這方面發揮著重要的作用。 WebSocket是一種全雙工的通訊協議,它允許伺服器和客戶端之間進行即時的雙向通訊。本文將介紹如何使用Java開發一個基於WebSocket的即時通訊應用,並提供一些具體的程式碼範例。準備工作在開始

See all articles