问题标签 [eventsource]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2000 浏览

cqrs - 微服务事件驱动架构中有多少个数据库?

我已经阅读了大量关于将 EventSource 用作微服务系统中有用架构的 CQRS 的文档、博客文章和示例。

一个流行的例子是银行转账应用程序: 银行转账应用

很明显有四个微服务,但我不明白,因为“命令端”微服务没有自己的数据库。

通过这张图片,所有微服务都使用相同的 eventStore 数据库,这应该违反微服务模式吗?

EventStore 数据库应该如何?单表?每个服务一张桌子?

0 投票
0 回答
127 浏览

javascript - 如何在 javascript 中序列化持久的 EventSource 连接以与 localStorage 一起使用

我想在浏览器中执行以下操作,以便可以在多个选项卡之间共享持久连接:

这甚至可能吗(我认识到即使可以做到这一点,也可能存在其他问题,例如确定哪个选项卡的 javascript 将处理给定的接收消息,这需要解决)?如果是这样,序列化和反序列化如何工作?我已经尝试过JSON.stringify(),但 jQuery$.toJSON()无济于事。

0 投票
1 回答
1005 浏览

javascript - 阻止 Chrome 发送多个服务器发送的请求

我有一个接受 的端点text/event-stream,它基本上发送两种不同类型的事件:statsresult. 当服务器发送result事件并关闭连接时。

问题是由于 sse 的设计,浏览器会重试连接。为了防止这种情况,我将重试值设置为更高的数字,例如 60000,并在客户端获得结果时关闭连接。

问题是,如果延迟很高,Chrome 会向服务器发送多个请求(它在 localhost 上没有问题)。Safari 和 Firefox 可以正常工作。在 Chrome 中,网络选项卡上只有一个请求,所以我认为 Chrome 不会因为请求超时而尝试连接服务器。它也不会因为发送第二个请求而等待服务器关闭第一个请求。什么可能导致 Chrome 出现此问题?

注意:服务器发送请求的端点和来源不同。对于正常的 HTTP 请求,Chrome 还会发送 OPTIONS 请求以找出权限,但对于 SSE,它不会发送 OPTIONS 预检请求,但我不确定这是一个问题,因为 SSE 是一个 GET 请求。

0 投票
1 回答
494 浏览

websocket - 为什么 SIGnalR 更喜欢 Forever Frames 而不是轮询?

我正在学习使用 SignalR,到目前为止我在这方面取得了成功。我可以实现集线器,我可以实现业务逻辑,我可以从我想要的服务器调用客户端函数,我可以从客户端调用服务器端方法,这东西很棒。令我困惑的是理论。

事实上,我从这个视频中收集了信息。SignalR 正在使用WebSockets,它通过单个TCP连接提供全双工通道。如果没有可用的 WebSocket,则回退协议将为EventSource。如果不可用,则将使用 Forever Frame。如果不可用,则将使用长轮询。对我来说很奇怪的是,一个非常老套的解决方案,比如永远框架比旧的约定更受欢迎,我对 SignalR 决定将永远框架作为第三个选项并将轮询作为第四个选项背后的基本原理感兴趣。

我试图找出这个问题的答案,我发现据传,与永远帧相比,长轮询的最大延迟时间是 3 倍。这是事实吗?如果是,是所有浏览器的事实,还是部分浏览器的事实?

0 投票
2 回答
2557 浏览

java - 如何使用 Spring Boot 创建事件源服务器?

如何使用 Spring Boot 应用程序创建事件源服务器?从下面的链接中,我没有看到 Java-spring boot 示例。任何参考都会有所帮助。

http://www.html5rocks.com/en/tutorials/eventsource/basics/

0 投票
1 回答
1555 浏览

polyfills - 如何包含 yaffle 事件源 polyfill

https://github.com/Yaffle/EventSource

我使用上面的方法是因为我想获得在 IE11 中工作的承诺,我已经用 npm 安装了它,但不确定我应该如何实现它。我在我的 js 文件中尝试过import event-source-polyfill,但也没有用。文档说只是运行构建,但是如果我已经在 node_modules/event-source-polyfill 目录中看到了 min.js 文件,那么这样做的目的是什么?实际上如何包含它?

0 投票
1 回答
939 浏览

javascript - 服务器发送事件中的数据限制

我正在使用服务器发送的事件来对您的数据库执行查询。服务器通过事件实时流式传输统计信息,stats当执行查询时,它发送result带有数据的事件并关闭连接。

您可以使用以下 curl 命令对其进行测试:

问题是数据超过几千字节,EventSource 不会触发result事件。

http://jsbin.com/jiteca/edit?html,输出

如果数据不是那么大,它可以正常工作:

http://jsbin.com/leginu/edit?html,输出

我尝试过 Chrome、Safari 和 Firefox,它们都遇到了这个问题。关于如何解决这个问题的任何想法?这是服务器发送事件的限制吗,因为我在 W3上的服务器发送规范上没有找到任何东西?

0 投票
1 回答
1038 浏览

ruby-on-rails - 测试一个包含 ActionController::Live 的控制器

我有一个包含 RailsActionController::Live模块的控制器。我正在显示一个日志文件的内容,该文件正在使用FileTailgem 读取,并使用SSEfromActionController::Live像这样:

我想live使用Rspec. 这是我目前拥有的:

如果我没有after适当的线路,则规范通过但它只是继续侦听并且连接永远不会关闭,因此规范永远不会完成,您必须手动杀死它们。

如果我有这after条线,它有时会通过,但大多数时候它会抛出异常,并且规范失败。

有没有办法让这个工作?也许有一种特定的方法必须进行测试,但在任何地方都找不到。

0 投票
1 回答
206 浏览

php - NetworkError:403 Forbidden when assignment eventsourcr to fullcalender

我正在使用 php 进行长池化(工作正常)并将其输出 JSON 分配给 fullcalender 事件源。

我的js代码

我的 php 池代码。

在控制台中,我得到了正确的输出。

控制台输出

我收到错误,

错误

在另一个 js 中,我还将事件源分配给 fullcalender,

所以我的问题是我哪里错了,有什么建议吗?为什么我会收到这样的错误?

0 投票
1 回答
47 浏览

orientdb - 记录保存在服务器后的OrientDB回调

我正在使用 OrientDB 实现记录版本控制,但它的回调似乎是在调用 OOBjectDatabaseTx#save(Object) 之后立即调用的。有没有办法为持久记录获得额外的回调?