HttpServer vs. Servlet - какой подход использовать для отображения обновления BufferedImage - PullRequest
1 голос
/ 10 февраля 2012

У меня есть приложение Java, и я хотел бы предоставить BufferedImage (который обновляется несколько раз в секунду) для веб-клиента.

Я начал с рассмотрения HttpServer (часть JDK).6).Я реализовал HttpHandler, и на дескрипторе (обмен HttpExchange) я беру последний BufferedImage и отправляю его по ссылке на обмен.

Я могу использовать свой веб-браузер для просмотра изображения, отправленного через обмени когда я обновляю браузер, я могу наблюдать за обновлением изображения (поскольку мое приложение обновляет BufferedImage).

Для следующего шага я хотел бы постоянно обновлять изображение в браузере (без необходимости обновления вручнуювеб-страница).Кажется, что HttpServer со связанным HttpHandler на самом деле не настроен для этого (просто одноразовый запрос / ответ).Я начал читать о сервлетах и ​​изучаю использование Jetty.

Я хотел бы знать, нахожусь ли я на правильном пути в поиске сервлетов, или есть ли способ "управлять" BufferedImageобновления для веб-клиента, который подключился к моему HttpServer?

Заранее спасибо.

Удар по фрагменту кода для моего метода дескриптора:

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
}
...