Отправленные сервером события не работают с использованием JavaFX WebView - PullRequest
0 голосов
/ 02 апреля 2020

Я разработал одностраничное приложение с React и MobX. Чтобы получить некоторую информацию о ходе выполнения из внутреннего кода, например, о копировании процесса выполнения файла, я использую Server Sent Events и EventSource с кодом javascript. В любом браузере я могу получать сообщения о событиях и успешно показывать прогресс. React получает изменения из события onmessage EventSource и отображает изменения на экране. Вот как я добавляю EventSource в мой код js. (Для тех, кто спрашивает, является ли формат сообщения источника событий правильным? Да, это так. Он работает в браузерах.)

Код:


    fetchEvents(url) {

        let evtSource = new EventSource(url);

        evtSource.onmessage = (message) => {
            const data = JSON.parse(message.data);
            //assign data to an observable variable
        }
    }

Однако мне нужен мой сингл приложение страницы для встраивания в приложение Java. Для этого я использую JavaFX WebEngine и WebView для загрузки своего приложения React. Все функции работают хорошо, за исключением событий Server Sent Events и EventSource. Методы onmessage (), onopen (), onerror () не вызываются. Таким образом, я не могу получить изменения данных, которые будут показаны на экране. Я не могу получить какую-либо информацию через EventSource в моем javascript коде. Вот код JavaFX;

Код:

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        primaryStage.setTitle("localhost");

        WebView myBrowser = new WebView();
        WebEngine myWebEngine = myBrowser.getEngine();
        myWebEngine.setJavaScriptEnabled(true);
        myWebEngine.load("http://localhost:8080");

        StackPane root = new StackPane();
        root.getChildren().addAll(myBrowser, reloadButton);

        primaryStage.setScene(new Scene(root, 800, 640));
        primaryStage.show();
    }

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

Разве JavaFX WebView не поддерживает EventSource и Server Sent Events? Мне интересно, есть ли способ заставить работать SSE в JavaFX WebView? Или есть ли другие возможные решения для встраивания моего одностраничного приложения в код Java, при котором EventSource и Server Sent Events работают хорошо.

Спасибо.

...