javascript - 是否可以在 WebBrowser 中使用 JavaScript 使用文本/事件流?
问题描述
我们有一个text/event-stream
从 POST 端点返回的 Rest 服务,其中包含一系列 JSON 对象。(它是一个返回 a 的 Spring Boot / Kotlin RestController kotlinx.coroutines.flow.Flow<SomeJSONObject>
)现在我们想在一个有角度的 WebApplication 中使用这个事件流,在每个对象到达时对其进行处理。不幸的是,我们不知道这是如何工作的。我们尝试了显而易见的事情,例如:
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...";
}
推荐阅读
- java - 正则表达式在字符串中查找变量
- spring - 是否有任何可用的 Spring 5.0.6.RELEASE osgified 版本补丁?
- python-3.x - 动画控制台 App 3 点加载器,我该怎么做?
- python - 内部服务器错误:AWS Elastic Beanstalk 上的 Flask 上的 Dash
- android - 滚动视图中的回收站视图
- html - 我需要编写什么 HTML 或 CSS 才能使占位符属性的文本可以用鼠标选择/突出显示?
- javascript - 如何在反应中呈现有关道具更改的返回数据
- ansible - 如何在ansible playbook中使用文件的行作为变量?
- uml - 真的需要我的用例图的建议。我正在尝试为下一个目标建模一个用例:
- python - Anaconda 安装的 cudatoolkit 和 cudnn 会影响我当前的配置吗?