많은 사람들이 서버에 연결하여 인쇄물 목록을 볼 수있는 부두 서버를 실행하려고합니다. 나는 연결하는 모든 사람들이 같은 가치관을 보길 원합니다.부두 서버의 여러 커넥터
예를 들어 시간을 기록하는 단일 목록이 있고 5 명 정도의 사람들이 내 웹 사이트 (예 : localhost : 8080/시간)에 가서 원하는 시간을 볼 수있게하려면 30 초마다 어떻게 설정해야합니까?
내가 무엇을 가지고 : 나는 부두를 사용하고
- . 은 내가이
- 를 확장 내 자신의 핸들러를 생성
- 8080 포트에 바인딩 된 단일 서버를 생성
- 두 사람이이 페이지에 연결하면 매 순간마다 인쇄본이 보입니다. 즉, 다른 모든 이벤트가 발생할 때마다 각 사람이 알 수 있도록 앞뒤로 전환합니다.
- 3 명이 연결되면 연결된 두 사람 만 계속 연결할 수 있습니다. 세 번째는 아무런 결과도 얻지 못한다. t를 화면에 표시합니다.
그렇게하려는 시도가 실패하고 내 문제의 해결책인지 이해할 수 없으므로이 커넥터를 설정하지 않았습니다.
도움이 될만한 사람이 있으면 누구나 아이디어를 가지고 있지만 내가하는 일에 대한 설명이 필요하면 더 자세한 정보를 제공하게되어 기쁩니다.
감사합니다.
처리기 코드 :
@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();
}
}
}
그래서 목록 객체 (즉, 통지) 30 초마다 내가 일어나 메인 클래스에 정의 된 정적 ArrayList를합니다. 다행히도 이것은 누군가 내가 핸들러에서 무엇을 바꿀 수 있는지 확신 할 수 없다는 것을 더 잘 이해할 수있게 도와 줄 것입니다 ...
난 당신이 몇 가지 코드를 게시 할 필요가 있다고 생각 핸들러에서 볼 것을 본질적으로 아무 문제가 없습니다. 커넥터를 가지고 놀 필요가 없어야합니다. 문제는 핸들러를 설정하는 방법에 거의 틀림없지 만, 설명으로는 우리가 충분히 작업 할 수있는 것은 아닙니다. – Tim
@Tim 방금 처리기 코드를 포함하도록 질문을 편집했습니다. 그것이 당신에게 어떤 아이디어라도 주시면 알려주세요. 시간을내어 주셔서 감사합니다! – abroad