簡體   English   中英

是否可以在 WebBrowser 中使用 JavaScript 使用文本/事件流?

[英]Is it possible to consume text/event-stream with JavaScript in a WebBrowser?

我們有一個 Rest 服務,它從 POST 端點返回一個text/event-stream ,其中包含一系列 JSON 對象。 (It is a Spring Boot / Kotlin RestController that returns a kotlinx.coroutines.flow.Flow<SomeJSONObject> ) Now we want to consume this event-stream in a angular WebApplication, processing each object as it arrives. 不幸的是,我們不知道這是如何工作的。 我們嘗試了顯而易見的事情,例如:

this.http.post(url, request)

或者

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

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

似乎瀏覽器甚至沒有發出請求,也沒有收到任何數據。 后端服務工作正常,我們可以通過調用端點來看到這一點,例如 postman。

有任何提示在 JavaScript 中如何工作就足夠了,然后它也將在 angular 中工作。

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...";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM