[英]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.