이것은 내 Servlet
에있는 것입니다. 내가 여기서 뭐하는 거지브라우저에 정기적으로 메시지를 표시합니다.
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("Initializing...");
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.execute(new Runnable() {
public void run() {
System.out.println("Inside Thread!!!");
for(int i=1; i<5; i++){
System.out.println("Date: " + new Date());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
executorService.shutdown();
// Some more piece of code is there
}
: 나는 날짜가 콘솔 5 sec
후 인쇄됩니다 별도의 스레드를 생성 한
. 내가 원하는 무엇
: A의 인쇄 할
Initializing... Inside Thread!!! Date : Sat Nov 01 15:57:57 GMT 2014 Date : Sat Nov 01 15:58:02 GMT 2014 Date : Sat Nov 01 15:58:07 GMT 2014 Date : Sat Nov 01 15:58:12 GMT 2014
내가 메시지의 동일한 세트를 원하는 :이 코드를 실행하면
, 나는 콘솔에 인쇄이 출력을 얻을 jsp
페이지에서 날짜가 5 sec
간격으로 인쇄되도록합니다 (코드 위에 Syetem.out.println()
메서드가 실행될 때마다 브라우저에 여러 응답을 보냄). 서버에서 메시지를 밀어
이유 : 위의 예에서
, 나는 루프에 간단한 메시지를 인쇄하고 있습니다. 그러나 실제 시나리오에는 계산이 있기 때문에 메시지가 다른 시간대 (즉, 5 초마다가 아니라 일부 메시지는 빠른 시간 내에 사용 가능하고 다른 메시지는 더 많은 시간이 소요될 수 있음)에서 사용할 수 있습니다. 따라서 서버에서 푸시하면 사용 가능한 메시지가있을 때마다 푸시 할 수 있습니다.
내가 (위의 코드에 ExecutorService
에서 즉) 별도의 스레드에서 브라우저에 복수 응답을 전송하는 방법을 잘 모르겠습니다 : 이해하기
수 없습니다. 나는 setInterval
메서드를 javascript
에 제시하고 있었지만이 코드를 어떻게 사용하는지 고소하지 않았습니다.
jQuery
또는 javascript
을 무료로 사용할 수 있습니다. 제발 조언.
위의 예에서 간단한 메시지를 루프로 인쇄합니다. 그러나 실제 시나리오에는 계산이 있기 때문에 메시지가 다른 시간대 (즉, 5 초마다가 아니라 일부 메시지는 빠른 시간 내에 사용 가능하고 다른 메시지는 더 많은 시간이 소요될 수 있음)에서 사용할 수 있습니다. 따라서 서버에서 푸시하면 사용 가능한 메시지가있을 때마다 푸시 할 수 있습니다. 제발 제안 해주세요. – user182944