当前位置: 首页 > 知识库问答 >
问题:

检测通量数据V.S的末端。错误

燕昊东
2023-03-14

目前正在使用Angular 5和Spring 5 WebFlux研究SSE。基本应用程序工作正常,但在研究错误处理时,我们注意到angular应用程序中的EventSource在由于到达数据流的末尾而关闭连接和发生错误(例如,在传输过程中终止应用程序)之间没有任何区别。

我们的调查所依据的例子如下。

https://thepracticaldeveloper.com/2017/11/04/Full-Reactive-Stack-II-The-AngularJS-Client/

http://javasampleade.com/reactive-programming/angular-4-spring-webflux-spring-data-reactive-mongodb-example-full-reactive-angular-4-http-client-spring-boot-restapi-server#25_service

当spring成功发送数据并到达流的末尾从而关闭连接时,或者当应用程序在流中间Ctrl+C时,或者当我们在发送数据中间随机抛出异常时,EventSource中的onerror和完成函数都会被调用。

EventSourcehtml" target="_blank">参数在所有三种情况下都只包含{type:'error'}

共有1个答案

万俟亦
2023-03-14

据我理解,SSE流主要讲无限流;该规范似乎没有提供一种标准的方式向客户机发送流结束的信号(默认情况下,客户机将尝试重新连接)。

您可以通过返回通量 并使用自定义事件终止该通量,在控制器中实现该功能

return Flux.concat(
    fetchUserEvents(),
    Flux.just(ServerSentEvent.builder().event("disconnect").build()
);

在客户端,完成后可以正确地关闭连接,将所有其他用例作为错误,并让浏览器自动重新连接:

evtSource.addEventListener("disconnect", function(e) {
    evtSource.close();
}, false);
 类似资料:
  • 问题内容: 通过json_decode()解析时,我正在尝试处理错误的json数据。我正在使用以下脚本: 如果$ _POST等于: 然后,json_decode会正确处理错误并吐出“错误的json数据!”;但是,如果我将$ _POST设置为“无效数据”之类的东西,它将给我: 我是否需要编写自定义脚本来检测有效的json数据,还是有其他一些漂亮的方法来检测到此数据? 问题答案: 以下是有关以下几点的

  • 我尝试使用db2cli odbc模块和odbc\u connect连接到DB2/AS400远程数据库,但返回下一个错误: 执行失败:[unixODBC][IBM][CLI Driver]SQL30081N检测到通信错误。使用的通信协议:“TCP/IP”。正在使用的通信API:“套接字”。检测到错误的位置:“10.10.100.5”。检测错误的通信功能:“recv”。协议特定错误代码:“”、“”、“

  • Casbin RBAC和RBAC96 在这个文档中,我们会比较Casbin RBAC与 RBAC96的区别。 Casbin RBAC支持RBA96的几乎所有特点,并在此基础上增加了新的特点。 RBAC版本 支持级别 说明 RBAC0 完全支持 RBAC0是RBAC96的基本版本。 它澄清了使用者、角色和权限之间的关系。 RBAC1 完全支持 Casbin 的 RBAC 支持 RBAC1 的角色层次

  • 对用户输入的数据进行合法性检查,避免错误非法的数据进入服务,这是业务系统最常见的需求。很可惜 Lua 目前没有特别好的数据合法性检查库。 坦诚我们自己做的也不够好,这里只能抛砖引玉,看看大家是否有更好办法。 我们有这么几个主要的合法性检查场景: JSON 数据格式 关键字段编码为 HEX(0-9,a-f,A-F),长度不定 TABLE 内部字段类型 JSON 数据格式 这里主要是 json dec

  • 我已经用React和Apollo客户端在NestJS服务器上用GraphQL API制作了简单的CRUD应用程序。 我有一个简单的突变: “EmailScalar”类型主要检查“email”输入是否具有格式 它不能通过验证(因为电子邮件类型工作正常) 但当从客户端发送的查询通过验证时: NestJS服务器日志(来自下面的代码) 以前从未使用过NestJS、Apollo、React或GraphQL,

  • 复制连接主机时出现了一个愚蠢的错误,使我指向了一个不正确的endpoint...这阻止了初始化进程30分钟... 最后一个例外是: 获取尝试失败!!!正在清除挂起的获取。尝试获取所需的新资源时,未能成功超过允许的最大获取尝试数(30)。 为了重现这个错误,我简单地用下面的连接字符串指向Google.es 初始化就会被卡住30分钟... 我希望它能更快地抛出异常,但我不确定应该触及哪些配置值:c3p