Ответ 1
Этот сервлет должен работать как рекламируемый в комментарии (не проверял его):
Отправьте сообщение с параметрами URL to
и message
Получить сообщение с get
(идентификатор приемника). Возвращает сообщение или ничего, если его нет. Следует проверить с помощью браузера.
В реальном мире запрос на получение не должен действительно изменять состояние сервера. Я бы только запускал это на время класса, так как любой может отправлять вещи на любой идентификатор, и любой может читать материал для любого id.
public class SimpleMessageServlet extends HttpServlet {
private Map<String,String> messages = new HashMap<String,String>();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String to = request.getParameter("to");
String message = request.getParameter("message");
if (to != null && from != null && message != null) {
messages.put(to, message);
}
response.setContentType("text/plain");
String get = request.getParameter("get");
if (get != null) {
String result = messages.remove(get);
if (result != null) {
PrintWriter out = response.getWriter();
out.println(result);
}
}
}
Изменить: упростить, чтобы хранить только одно сообщение на адрес, должно быть достаточно для игры на основе поворота, и буферизация просто добавит сложности клиентской логике (очистка устаревших данных поворота от предыдущих совпадений и т.д.). Вероятно, имеет смысл синхронизировать клиентов так или иначе, например. посылать "стартовый" сигнал перед отправкой поворотов и отбрасывать что угодно, пока не будет получен "старт". Печально то, что это потребует опроса, использование одноранговых сокетов будет намного приятнее.