如何在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中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3漢化版
中文版,非常好用