Можно ли использовать текст / поток событий с помощью JavaScript в WebBrowser?

У нас есть служба отдыха, которая возвращает text/event-streamиз конечной точки POST, которая содержит серию объектов JSON.(Это Spring Boot / Kotlin RestController, который возвращает kotlinx.coroutines.flow.Flow<SomeJSONObject>Теперь мы хотим использовать этот поток событий в веб-приложении angular, обрабатывая каждый объект по мере его поступления. К сожалению, мы не знаем, как это работает. Мы пробовали очевидные вещи, например:

this.http.post(url, request)

или же

this.http.post(url, request).toPromise().then(value => ...

и

this.http.post(url, request).subscribe(value => ...

Похоже, браузер даже не запрашивает и не получает никаких данных. Внутренняя служба работает нормально, мы можем убедиться в этом, вызвав конечную точку, например, с помощью почтальона.

Было бы неплохо иметь какие-либо подсказки, как это работает в JavaScript, тогда это также будет работать в angular.

1 ответ

text/event-streamэто тип mime, связанный с событиями, отправленными сервером. Вы можете прочитать о них больше и увидеть некоторые примеры кода здесь, а в Интернете есть множество руководств, показывающих, как использовать их с Angular, например этот .

Вот простой пример обработки отправленного сервером события в простом Javascript: yourSSEURLэто URL-адрес, который возвращает текст/поток событий:

      if(typeof(EventSource) !== "undefined") {
  var source = new EventSource("yourSSEURL");
  source.onmessage = function(event) {
    document.getElementById("result").innerHTML += event.data + "<br>";
  };
} else {
  document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events...";
}
Другие вопросы по тегам