Я разработал одностраничное приложение с 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 работают хорошо.
Спасибо.