【发布时间】:2019-08-19 16:23:04
【问题描述】:
我正在尝试使用 pty.js 和 xterm.js 创建一个终端模拟器。我以前从未尝试过这样的事情,所以如果我说错了,我道歉,这是因为我没有正确理解它。无论如何,终端应该显示在 JavaFX WebView 中,并且所有 GUI 都已准备好并经过测试。根据我的发现,我了解到必须在 localhost 上运行一个服务器,以便 pty.js 在那里生成一个 shell,并通过 WebView 上的 xterm.js 传达结果。现在,我正在尝试在新的Thread 中使用ServerSocket 创建服务器,但是当我测试应用程序并单击终端按钮时,应用程序会冻结。我已经通过访问我的本地主机测试了服务器是否正在运行,并且它已经启动并正在运行。所以,我得到的是应用程序的主线程在服务器线程启动时优先级较低。我对吗?如果是这样,我该如何解决这个问题?
在从主控制器加载的终端场景的initialize 方法中调用以下函数。有人可以解释一下为什么会这样吗?
private void createServerToSpawnPty() {
Thread thread = new Thread(() -> {
try {
ServerSocket server = new ServerSocket(8080);
System.out.println("Created Java localhost server on port: 8080");
while (true) {
final Socket client = server.accept( );
System.out.println("client connected:+
client.isConnected( ));
}
}catch (IOException exception) {
exception.printStackTrace( );
}
});
thread.setDaemon(true);
thread.run();
}
【问题讨论】:
标签: java javafx serversocket xtermjs