我有一个Java应用程序,并希望将一个BufferedImage(每秒更新几次)发送给Web客户端。
我从查看HttpServer(JDK 6的一部分)开始。我已经实现了一个HttpHandler,并且在句柄(HttpExchange exchange)调用中我抓住了最新的BufferedImage并使用交换引用将其发送出去。
我可以使用我的网络浏览器查看通过交换机发送的图像,当我刷新浏览器时,我可以观察图像更新(因为我的应用程序正在更新BufferedImage)。
下一步,我想在浏览器中不断更新图像(无需手动刷新网页)。似乎HttpServer与关联的HttpHandler并没有真正设置为执行此操作(只是一次性请求/响应)。我已经开始阅读有关Servlets的内容了,我正在研究如何使用Jetty。
我想知道我是否正在寻找Servlets,或者是否有办法将BufferedImage更新“驱动”到已连接到我的HttpServer的Web客户端?
提前致谢。
我的句柄方法的代码片段:
public void handle(HttpExchange exch) throws IOException {
BufferedImage image = fImageProvider.getLatestImage();
ByteArrayOutputStream output = new ByteArrayOutputStream(SIZE);
ImageIO.write(image, IMAGE_CODEC, output);
byte[] byteArray = output.toByteArray();
exch.sendResponseHeaders(HttpURLConnection.HTTP_OK, byteArray.length);
exch.getResponseBody().write(byteArray);
exch.close
}