【问题标题】:How can I provide live updates to a webpage from a Java webserver?如何从 Java 网络服务器为网页提供实时更新?
【发布时间】:2017-05-22 17:07:43
【问题描述】:

我正在尝试创建一个 Java(不是 javascript,但我可以肯定地包含它)网络服务器,它将能够将实时控制台从另一个 Java 程序打印到网页。我知道如何制作 Java 网络服务器,也知道如何访问其他正在运行的 Java 程序的输入和输出流,但我不知道如何发送控制台输出并从该人正在查看的网页获取控制台输入。

我可以使用 html 并让页面每半秒重新加载一次,但是没有人可以输入任何内容发送到控制台。

有人建议我使用 ASP,但我什至不知道从哪里开始。

回顾一下,我想向网页发送和显示实时数据,并将实时用户输入接收回网络服务器。

作为参考,我将以下内容用于要发送到网页的输出:

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "my.jar");
pb.directory(new File("C:/Users/Michael Forseth/Desktop/Server Stuff/Test Moltres/TEST SERVER"));
final Process p = pb.start();

InputStream in = p.getInputStream();
InputStreamReader ins = new InputStreamReader(in);
BufferedReader br = new BufferedReader(ins);

String line;
while((line = br.readLine()) != null){
    //Send "line" to webpage for user to see
    System.out.println("CONSOLE: " + line);
}

【问题讨论】:

    标签: java asp.net webserver


    【解决方案1】:

    您正在描述现代网站的运作方式。 java webserver 监听 http 请求并返回数据(通常是 json 或 html 格式)。为避免在浏览器(客户端)中重新加载页面导致用户无法键入,您可以只重新加载页面的一部分。这是通过 ajax 完成的,最简单的方法是使用 javascript 和一个名为 jQuery 的库。如果您不想为此学习 javascriot,有一个名为 intercoolerjs 的 javascript 库,它允许您使用纯 html 属性启用 ajax。

    编辑:如果您需要让服务器在用户不做任何事情的情况下更新页面,您必须阅读有关 websockets 的信息。希望这会让您朝着正确的方向前进。

    【讨论】:

    • 我想我会查找 websockets,因为我需要它在用户不做任何事情的情况下进行更新。是否可以制作某种 js 计时器来请求 ajax 每秒左右更新一次?
    • Websockets 不会像 http 协议那样在一个请求后关闭连接,因此您必须对您的 Web 服务器进行调整。使用简单的 js 计时器可能会很好,请查看 this answer,它为此提供了一个很好的示例。如果您想了解 intercoolerjs,请查看 this example
    • 我让它通过 WebSockets 工作。我在这里找到了这个例子:restlessdev.com/blog/websockets-in-java,我能够从中进行更改,最终得到了现在的样子,它可以与我用 Java 制作的命令进行交互:finished picture
    • @Forseth11,感谢您的解决方案。我有完全相同的要求,需要有相同的实现。如果您可以为客户端和服务器端共享您的整个代码 sn-ps 或 source-repo,这将增加参考价值。提前致谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多