Rumah  >  Artikel  >  Java  >  Cara menggunakan JavaFX dan WebSockets dalam Java 9 untuk melaksanakan antara muka grafik untuk komunikasi masa nyata

Cara menggunakan JavaFX dan WebSockets dalam Java 9 untuk melaksanakan antara muka grafik untuk komunikasi masa nyata

王林
王林asal
2023-07-30 10:54:191716semak imbas

Cara menggunakan JavaFX dan WebSockets dalam Java 9 untuk melaksanakan antara muka grafik untuk komunikasi masa nyata

Pengenalan:
Dalam era Internet hari ini, komunikasi masa nyata adalah salah satu fungsi yang sangat penting. Contohnya, kemas kini masa nyata keadaan pasaran saham, sembang masa nyata, dsb. Artikel ini akan memperkenalkan cara menggunakan JavaFX dan WebSockets dalam Java 9 untuk melaksanakan antara muka grafik untuk komunikasi masa nyata.

Bahagian Pertama: Pengenalan kepada JavaFX
JavaFX ialah perpustakaan Java untuk membina aplikasi pelanggan yang kaya. Ia menyediakan antara muka grafik yang berkuasa untuk mencipta pelbagai kesan visual dengan mudah.

Bahagian 2: Pengenalan kepada WebSockets
WebSockets ialah teknologi yang digunakan untuk komunikasi dua hala masa nyata antara pelanggan dan pelayan. Ia membolehkan pelayan menghantar mesej secara proaktif kepada pelanggan dan menyediakan protokol mudah untuk mengendalikan komunikasi masa nyata.

Bahagian 3: Gabungan JavaFX dan WebSockets
Sekarang mari kita lihat cara menggabungkan JavaFX dan WebSockets untuk mencapai antara muka grafik untuk komunikasi masa nyata. Pertama, kita perlu mencipta aplikasi JavaFX dan menambah perpustakaan WebSockets kepada kebergantungan projek.

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();
        }
    }
}

Dalam kod di atas, kami mencipta aplikasi JavaFX yang dipanggil "RealTimeApplication" dan menambah TextArea untuk memaparkan mesej dan TextField untuk memasukkan mesej. Apabila pengguna menekan kekunci Enter dalam TextField, kami menggunakan sesi WebSockets untuk menghantar mesej kepada pelayan. Apabila mesej diterima daripada pelayan, kami akan memaparkannya dalam TextArea.

Bahagian 4: Persediaan Sisi Pelayan
Seterusnya, kita perlu menyediakan bahagian pelayan untuk mengendalikan mesej daripada pelanggan dan menyiarkannya kepada semua pelanggan yang berkaitan. Di sini, kami menggunakan Spring Boot untuk mencipta pelayan WebSockets yang mudah.

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);
            }
        }
    }
}

Dalam kod di atas, kami mencipta pelayan WebSocket bernama "WebSocketServer" dan mengikatnya pada titik akhir "/ws" menggunakan anotasi @ServerEndpoint. Apabila mesej diterima daripada pelanggan, pelayan menyiarkannya kepada semua pelanggan yang bersambung.

Kesimpulan:
Dengan menggabungkan JavaFX dan WebSockets, kami boleh dengan mudah melaksanakan antara muka grafik untuk komunikasi masa nyata. Sama ada anda sedang mencari kemas kini pasaran saham masa nyata atau sembang langsung, teknologi ini boleh menjadi sangat berguna. Saya harap artikel ini telah membantu anda dalam melaksanakan antara muka grafik untuk komunikasi masa nyata menggunakan JavaFX dan WebSockets dalam Java 9.

Pautan rujukan:

  • Dokumentasi rasmi JavaFX: https://openjfx.io/javadoc/12/
  • Dokumentasi rasmi WebSocket: https://www.w3.org/TR/websockets/
  • Dokumentasi rasmi Spring Boot :https://spring.io/projects/spring-boot

Atas ialah kandungan terperinci Cara menggunakan JavaFX dan WebSockets dalam Java 9 untuk melaksanakan antara muka grafik untuk komunikasi masa nyata. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn