SSE и Servlet 3.0

Я зарегистрировал типичный SSE при загрузке страницы:

Client:

sseTest: function(){

var source = new EventSource('mySSE');
source.onopen = function(event){
console.log("eventsource opened!");
};

source.onmessage = function(event){
var data = event.data;
console.log(data);
document.getElementById('sse').innerHTML+=event.data + "<br />";
};
}

Мой Javascript-отладчик говорит, что "источник событий открыт!" был успешно.

My Server Code is a Servlet 3.0:

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns={"/mySSE"}, name = "hello-sse", asyncSupported=true)
public class MyServletSSE extends HttpServlet {

@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

resp.setContentType("text/event-stream");
resp.setCharacterEncoding("UTF-8");

Random random = new Random();
PrintWriter out = resp.getWriter();

//AsyncContext aCtx = req.startAsync(req, resp);
//ServletRequest sReq = aCtx.getRequest();

String next = "data: " + String.valueOf(random.nextInt(100) + 1) + "\n\n";
//out.print("retry: 600000\n"); //set the timeout to 10 mins in milliseconds
out.write(next);
out.flush();
// do not close the stream as EventSource is listening
//out.close();
//super.doGet(req, resp);
}
}

Код работает! Клиентский код запускает метод doGet () - каждые 3 секунды и получает новые данные.

Questions: Однако мне интересноhow I can make this code better с помощью нового Servlet 3.0 Futures, такого как Async-Support или asyncContext.addListener (asyncListener) или чего-то еще, чего я не знаю. Интересно, я никогда не закрываю потокhow my server will scale?

Теоретически, лучшим подходом было бы явным образом запускать метод doGet () через серверный код при наличии новых данных, поэтому клиенту не нужно запускать на стороне клиента «onmessage ()» -Method и поэтому на стороне сервера «doGet ()» - метод каждые 3 секунды для новых данных.

Ответы на вопрос(2)

Ваш ответ на вопрос