Я не уверен, что то, что я пытаюсь сделать, возможно, а может и нет. Вот моя проблема:
Я пытаюсь использовать сервлет для передачи информации от клиента на сервер через HTTP. Это общение очень частое (я передаю информацию пользовательского интерфейса, поэтому каждое событие мыши), поэтому я хочу иметь как можно меньше накладных расходов, чтобы избежать проблем с задержкой, поэтому я не хотел бы делать вызов GET для каждой передачи , HTTP это требование. Я использую старую версию Tomcat (Servlet API 2.4). Я предполагаю, что это отчасти случай использования веб-сокетов, но у меня нет какой-либо поддержки веб-сокетов.
Я пытался открыть URL-соединение на стороне клиента и открыть поток ввода (в противном случае doGet () сервлета никогда не вызывается). Я передаю аргумент для целей инициализации клиенту.
URLConnection uiConnection = url.openConnection();
uiConnection.setRequestProperty("Authorization", "Basic " + encode("xyz" + ":"
+ "xyz"));
uiConnection.setReadTimeout(0);
uiConnection.setDoOutput(true);
uiConnection.setAllowUserInteraction(true);
DataInputStream is = new DataInputStream(
uiConnection.getInputStream());
Когда я позже пытаюсь извлечь выходной поток из этого соединения, я получаю исключение ProtocolException (не могу записать вывод после чтения ввода).
out = new BufferedWriter(new OutputStreamWriter(
uiConnection.getOutputStream()));
out.write(uiUpdate);
На стороне сервлета я сделал что-то вроде этого:
DataInputStream is = new DataInputStream(
request.getInputStream());
Я совершенно не на том пути или что-то подобное возможно без использования нового соединения для каждой передачи?
Спасибо,
Mark