问题标签 [event-stream]

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 投票
1 回答
108 浏览

javascript - 使用 RxJS 事件流进行简单的序列管理

我正在尝试学习如何在事件流中进行思考,并且试图通过在一些人为的场景中对其进行测试来围绕它进行思考。我坚持以下情况:

假设我有两个按钮,我们将它们称为ABA可以随时点击。B也可以被点击,但前提A是之前被点击过。换句话说,B永远不能连续点击两次。这是相应的弹珠图(其中 x 表示事件被忽略):

标准方法是将状态存储在标志中并使用 if/else 控制块做出决策,如下所示:

我觉得应该有一种干净、简洁的方式来做到这一点,而不需要标志或一些超级混乱的事件流合并,但它让我无法理解。RxJS 中是否有一个someMethod()这样我们可以执行以下操作以获得预期的效果?

0 投票
1 回答
915 浏览

google-chrome - 开发者工具 -> 网络中奇怪的 chrome 行为(无法监控 EventStream/Server Sent Events)

我在我的网站上使用 SignalR 和服务器发送事件,我可以通过单击请求,然后选择 EventStream 选项卡,使用开发人员选项卡在 Chrome 中很好地调试它。

但是最近发生了一些奇怪的事情,每次我使用 EventStream 选项卡选择请求时,选择会在一两秒后“跳转”到下一个或上一个项目,所以我什么都看不到。另一个奇怪的是,即使我关闭了控制台,下次我打开开发者工具时,控制台又会自行弹出。我不知道这些是否连接,但它以前没有那样工作,所以也许这是同一类型的问题。我的 chrome 版本是:49.0.2623.87 m,但我认为我没有在它发生之前进行更新。

0 投票
2 回答
283 浏览

events - 什么是面向服务/微服务架构的好的事件存储/流中间件

我正在构建一个微服务架构,并且正在寻找一种流式传输事件的好方法。

目前我有一个服务发布一个事件,其他三个服务需要以某种方式做出反应,但是对这个事件的反应只会发生一次。

目前我正在使用 RabbitMQ 并且我的服务在单独的队列中发布三条消息,并且每个订阅服务都侦听一个队列。因此,实际上只有一个服务实例可以接收消息并对其做出反应。

但是,我不喜欢这种方法,因为如果我想添加一个新订阅者,我必须为发布服务添加一个新队列。

我基本上是在事件流上寻找某种中间件,它可以让多个服务监听一个事件,但要确保每个服务只有一个实例对事件做出实际反应。

我还没有找到任何东西,所以我很感激建议。

0 投票
1 回答
572 浏览

javascript - 在第二个的 onopen 方法上关闭第一个事件源

我正在开发一个使用 window.EventSource 将数据流式传输到表格视图的应用程序。由于每个服务器的最大连接数限制为 6,我试图在给定的时间点拥有一个 EventSource 对象,所以基本上我需要在第二个的 onopen 方法上关闭第一个事件源对象然后第二个的 onmessage 事件会将数据流式传输到表视图。考虑以下代码在 onclick 事件上运行,

上面的代码有效,但正如我所提到的,而不是直接关闭 firstEventSource,我需要通过确保第二个事件源已打开它的连接来关闭它。

0 投票
1 回答
318 浏览

perl - 使用 WWW::Mechanize 或 LWP::UserAgent 获取文本/事件流 Web 响应

WWW::Mechanize用来获取一个网页,其中包含一个谷歌地图小部件,该小部件从文本/事件流类型的单个响应中接收常量数据。

这种响应就像来自服务器的永无止境的响应,不断返回更新的数据以使小部件工作。

我试图找出如何从 Perl 中读取确切的响应。使用类似的东西:

但这不起作用,因为响应永远不会结束。

每次服务器更新流时,我如何发出该请求并开始读取响应并使用该数据执行某些操作?

0 投票
1 回答
1518 浏览

node.js - 如何关闭在 Angular2 中创建的 HTTP 连接?

我正在开发一个示例 cordova/ionic 应用程序。我正在使用 angular2/typescript。我发出了一个 GET 请求,让我可以处理来自 node.js 服务器的事件流。我想关闭这个连接。我怎样才能做到这一点?

服务器端代码如下所示:

0 投票
1 回答
281 浏览

jersey - 有没有办法使用 java SSE 客户端获取 Hystrix Stream

有什么方法可以获取 Hystrix 流(产生度量),因为它是服务器端事件流,因此无法使用普通的 http 客户端获取它。

我试图使用基于泽西岛的 SSE,但它无法这样做。

每当 hystrix 进行调用时,它会生成一些可以通过 servlet 访问的指标数据(示例 url 类似于:::/hystrix.stream)。

我想在特定时间捕获此流的响应。

有什么办法可以做到这一点?

谢谢你。

0 投票
1 回答
425 浏览

wso2 - WSO2:更新 Siddhi 查询中的输出流

我有一个 siddhi 查询,通过使用时间批处理窗口来获取一分钟内的事件总数。使用输出流,我正在更新一个条形图,其中包含恒定的未来值、x 轴上的时间戳(日期和时间,直到分钟)和 y 轴上的事件计数。

但是有时一分钟内的事件数量需要太长时间才能传输,因此查询不会给出正确的结果。

例如,如果我总共获得 60 个事件,并且此查询首先给我 40 的计数,它显示在条形图中,但一分钟后它的值更改为 20,根据逻辑这是正确的,但我担心是否有办法我可以为任何以前的时间戳(在这种情况下为 40+20)更新流和条形图,并将下一个即将到来的时间戳的新值插入其中。

我已经看到更新功能用于表而不是流,是这样吗?而且我还想要 2 个输出流从同一个输入流中填充两个不同的条形图。那么下面的查询是否正确?

查询是:

0 投票
1 回答
871 浏览

node.js - node heap exhausted when piping JSONStream.parsed() data through es.map() and JSONStream.stringify() to file stream

I'm trying to pipe an input stream (created from a huge GeoJSON file) through JSONStream.parse() to break the stream into objects, then through event-stream.map() to allow me to transform the object, then through JSONStream.stringify() to create a string out of it, and finally to a writable output stream. As the process runs, I can see node's memory footprint continue to grow until it eventually exhausts heap. Here's the simplest script (test.js) that recreates the problem:

A little bash script (barf.sh) that spews an endless stream of JSON into node's process.stdin will cause node's heap to gradually grow:

by running it as so:

There are a couple of curious ways to sidestep the issue:

  • Remove the fs.createWriteStream() and change the last pipe stage from ".pipe(out)" to ".pipe(process.stdout)" and then pipe node's stdout to /dev/null
  • Change the asynchronous es.map() to the synchronous es.mapSync()

Either one of the preceding two actions will allow the script to run forever, with node's memory footprint low and unchanging. I'm using node v6.3.1, event-stream v3.3.4, and JSONStream 1.1.4 on an eight core machine with 8GB of RAM running Ubuntu 16.04.

I hope someone can help me correct what I'm sure is an obvious error on my part.

0 投票
1 回答
175 浏览

wso2cep - WSO2CEP:从 siddhi 查询中的流中获取先前的事件值

我一直在使用以下siddhi query来获取每分钟的事件数;ts 作为时间戳(字符串)和 ftp_requests 作为计数(int)。

如果我想在每个新值中添加 ftp_requests 的先前值以获取每个新请求的累积请求数,需要进行哪些更改?siddhi 中是否有任何功能可以从已发布的流中获取先前的事件值?