Я хочу создать сервлет, в который я могу отправлять данные (GET / POST не имеет значения) через некоторый промежуток времени. Это будет что-то вроде постоянного подключения от клиента к серверу. Используя это единственное соединение, я буду время от времени отправлять некоторые данные (String) сервлету, где они будут обрабатываться. так что мне не нужно устанавливать новое соединение каждый раз, когда я хочу отправить данные.
То, что я пробовал в настоящее время. Вот мой чистый клиент Java:
try {
URL url = new URL("http://localhost:8080/MyProject/MyServletName");
HttpURLConnection connnection = (HttpURLConnection) url.openConnection();
connnection.setRequestMethod("GET");
connnection.setRequestProperty("Connection", "keep-alive");
connnection.setDoOutput(true);
OutputStream writer = connnection.getOutputStream();
String message = "message-";
int counter = 0;
while (counter < 30) {
Thread.sleep(1000);
message = "message-" + counter;
writer.write(message.getBytes());
writer.flush();
counter++;
}
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
Так что в идеале этот клиент будет записывать данные в выходной поток и сбрасывать их через 1 секунду. И то же самое я должен получить в моем сервлете. Вот мой код сервлета (метод doGet):
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(request.getInputStream()));
String line = "";
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
Теперь сервлет должен печатать строку, полученную от клиента, через каждую секунду. но проблема здесь в том, что сервлет даже не вызывается. Если я добавлю ниже строку в моем классе клиента.
int HttpResult = connnection.getResponseCode();
Затем сервлет вызывается, но он выполняется полностью и не ждет данных, отправленных клиентом. Как это будет работать? Он должен быть там в ожидании новых данных от клиента. Любая помощь будет оценена. Спасибо