Несколько коннекторов на сервере Jetty

Я пытаюсь запустить Jetty Server, на котором несколько человек могут подключаться к серверу и просматривать список распечаток. Я хочу, чтобы все, кто подключается, видели распечатанные одни и те же значения.

Например, если у меня есть один список, отслеживающий время, и я хочу, чтобы около 5 человек могли перейти на мой веб-сайт (например, localhost: 8080 / время), и все они будут видеть, сколько сейчас времени, каждые 30 секунд, как бы мне это настроить?

Что у меня есть:

  • Я использую Jetty.
  • Я создал один сервер, привязанный к порту 8080.
  • I created my own handler that extends AbstractHandler
    • this writes to the screen saying when an event has transpired (i.e. 30 seconds have passed)
  • Если два человека подключаются к этой странице, каждый из них видит распечатку каждую минуту (то есть она переключается взад и вперед, позволяя каждому узнать, когда произошло любое другое событие)
  • Если подключатся 3 человека, только двое смогут оставаться на связи, а третий просто будет вращаться, не выводя на экран никакого вывода.

Я не настраивал собственные соединители, так как мои попытки сделать это были безуспешными, и я не уверен, как я понимаю, является ли это решением моей проблемы.

Любая помощь будет принята с благодарностью, и если у кого-то есть идея, но требуется некоторое разъяснение относительно того, что я делаю, я был бы рад предоставить более подробную информацию.

Спасибо!

Код обработчика:

@Override
public void handle(String target, Request request, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException
{

httpServletResponse.setContentType("text/html;charset=utf-8");
httpServletResponse.setStatus(HttpServletResponse.SC_OK);

request.setContextPath("/time");
request.setHandled(true);

while (true) {

    synchronized(Main.list) {
         while (!Main.list.isEmpty()) {
              Double time = Main.list.get(0);
              httpServletResponse.getWriter().println("<h1>The time now is " + time + "</h1>"); 
              httpServletResponse.flushBuffer();    
              Main.list.remove(0);
         }
         try {
              Main.list.wait();
         } catch (InterruptedException e) {
              e.printStackTrace();
         }
    }

 }

Таким образом, объект списка представляет собой статический список ArrayList, определенный в классе Main, который я просыпаюсь (т.е. уведомляю) каждые 30 секунд. Надеюсь, это поможет кому-то лучше понять, о чем я говорю, поскольку я не уверен, что я могу изменить в обработчике ...


person abroad    schedule 27.02.2012    source источник
comment
Я думаю, вам нужно опубликовать код. Вам не нужно играть с коннекторами - ваша проблема почти наверняка заключается в том, как вы настроили свой обработчик, но ваше описание не дает нам достаточно информации для работы.   -  person Tim    schedule 28.02.2012
comment
@Tim Я только что отредактировал вопрос, включив в него код обработчика. если это даст вам какие-либо идеи, пожалуйста, дайте мне знать, спасибо, что нашли время, чтобы взглянуть на это!   -  person abroad    schedule 28.02.2012


Ответы (1)


Как вы вводите клиентов в своего обработчика? У браузеров есть ограничения на количество подключений к определенному хосту, возможно, вы это видите.

в этом коде обработчика нет ничего принципиально неправильного, кроме того, что это вообще странная вещь, которую можно увидеть в обработчике

person jesse mcconnell    schedule 05.03.2012