나는 스프링 프레임 워크를 사용하는 자바 웹 서버를 가지고 있으며 서버 보낸 이벤트를 사용하여 매초마다 웹 클라이언트에게 알림을 보내려고한다. 이러한 알림자바 웹 서버의 서버 - 보낸 이벤트
내 컨트롤러는 다음과 같습니다
@Controller
public class NotificationController {
private static final String REST_PREFIX = "/rest/notifications";
@RequestMapping(value = {REST_PREFIX}, method = {RequestMethod.GET})
synchronized public void getMonitoringNotifications(HttpServletRequest request, HttpServletResponse response) {
response.setContentType("text/event-stream;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Connection", "keep-alive");
try {
PrintWriter out = response.getWriter();
int i = 0;
while (true) {
out.print("id: " + "ServerTime" + "\n");
out.print("data: " + (i++) + "\n\n");
out.flush();
Thread.currentThread().sleep(1000);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
내 문제는 모든 알림이 전송되는 대신 일초 후 각 알림을 수신에, 클라이언트가 대기하는 것입니다. 많은 알림을 보내려고하면 고객에게 30 세가되면 결국 모두 받게됩니다.
<!DOCTYPE html>
<html>
<body>
<h1>Notification received : </h1>
<div id="ServerTime"></div>
<script>
if (typeof (EventSource) !== "undefined") {
var source = new EventSource("https://10.241.53.185/rest/notifications");
source.addEventListener('message', function(event) {
console.log(event.data);
});
} else {
document.getElementById("ServerTime").innerHTML = "Working, processing, getting info....";
}
</script>
</body>
</html>
는이 문제 좀 도와 주 시겠어요 : 그것은 단지 알림을 얻기 위해 특정 엔드 포인트에 수신으로
내 클라이언트는 간단하다?
감사합니다.
분명히 클라이언트에게 정보를 보내는 방법이 아닙니다. 결과로'SseEmitter' 또는'StreamingResponseBody'를 사용하십시오. –
정보를 제공해 주셔서 감사합니다. 나는 또한 다른 스레드에서 프린터에 쓰는 데 필요한 코드로 문제를 발견했다. – Ancuta