Я думал, что отправка HTTP SSE из Java и обработка этих соединений не должны быть такими сложными, но я не могу понять, как это сделать.
У меня есть один сервер (Java SE 11)и несколько клиентов (веб-браузеры с JavaScript), которые начинают прослушивать сообщения с сервера.(Я тестирую на localhost)
На стороне клиента очень просто:
var evtSource = new EventSource("localhost/javaapp");
evtSource.onmessage = function(e) {
console.log("message: " + e.data);
}
evtSource.onerror = function(e) {
console.log("sse failed");
}
Но на стороне сервера я понятия не имею.После некоторого исследования я обнаружил, что, возможно, мне следует использовать API javax.ws.rs.sse
, но все, что у него есть, - это интерфейсы, и примеры фрагментов кода, которые вы обнаружите, используют множество аннотаций @чтобы избежать.
Мне вообще нужен этот API?Или я могу просто создать простое HTTP-соединение с соответствующими заголовками?Но тогда как реализовать все возможности SSE?Автоматическое поддержание работоспособности и так далее ...
Цель состоит в том, чтобы обслуживать всех клиентов отдельно.Они подписываются на сервер, и в случае, если какое-либо событие происходит для одного, сервер отправляет сообщение этому.Так что речь идет не о том, чтобы передавать всем одно и то же.