问题标签 [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 回答
282 浏览

ruby - 检测用户何时离开事件流

我正在尝试使用Sinatra从头开始​​制作聊天室。我需要检测用户何时离开页面。起初,我在考虑使用 Javascriptonbeforeunload函数,但后来用户实际上可以假装离开或离开而不通知服务器。

我的流部分代码如下所示:

根据 Sinatra 示例文件之一chat.rb,它基本上是一个聊天室,他们使用

但在我的测试中,当我关闭页面作为测试时它没有触发(在我的例子中,我有它puts如果代码被触发,我在控制台中有一些东西,并且没有任何东西输出到控制台)。

是否有更可靠的方法来检测用户是否离开流?

另外,我没有使用socket.io(客户端)或任何东西,但如果它解决了我的问题,我愿意接受。

0 投票
2 回答
629 浏览

perl - Perl Mojolicious + PgAsync 插件——泄露数据库连接?

我正在使用Mojolicious和一个名为pgAsync的插件来监听从Postgres数据库NOTIFY发出的事件。我目前拥有的代码运行良好,但我看到数据库连接的数量只会不断增加。

后端

正如你所看到的,我需要做一些hackery来让它按照我的意愿工作。 pg_listen似乎每次通话后都未定义回调。当我pg_listen再次调用时,这导致了一个错误(因为它未定义),我不得不修改PgAsync::Db.pm的第 34 行来添加一个检查:

->到->


前端

我正在使用带有EventSource对象的 JavaScript 来监听来自 Mojolicious 脚本的推送通知:


问题

仔细观察,这个系统似乎在不断地创建更多的数据库连接:

  1. 从无到有,有1个数据库连接,这是我在看有多少个数据库连接select count(*) from pg_stat_activity;

  2. 我开始 morbo 和 Mojolicious 脚本与DEBUG_PG=1 morbo mojopush.pl. 现在有2个数据库连接(第一个是我在psql,第二个是morbo)

  3. 我用 EventSource 对象打开网页。它使用内容类型正确设置GET请求text/event-stream并保持连接打开。现在有 3 个数据库连接

  4. 我进入 psql 并发送NOTIFY foo, 'test',Mojo 脚本检测到它,网页显示“test.txt”。仍然有 3 个数据库连接。

  5. 我刷新页面,现在有 4 个数据库连接。我等待 300 秒不活动超时,然后创建另一个数据库连接,导致 5 个连接。

如果有人可以帮助我指出正确的方向,那将不胜感激!

0 投票
2 回答
2041 浏览

javascript - Node.js 事件流:在哪里设置 MaxListeners?

我已经搜索并搜索了这个,但无济于事。我已经梳理了网络(包括 Stackoverflow)和 Node 文档以寻求答案,但没有找到一个可行的答案(也许这对我来说只是不好的搜索)。我正在处理 gulp 配置文件中的事件流,并且我有一个特定的任务正在从 EventEmitter 类中遇到经典的“检测到内存泄漏”错误。根据我的发现,处理这个问题的答案似乎是调用 EventEmitter 类的 setMaxListeners 方法;我的研究表明事件流有一个 Stream 对象,它应该是 EventEmitter 的一个实例。但是,无论我尝试调用 setMaxListeners 的方式,我都找不到方法。在筋疲力尽地研究这个问题之后,我想我会把它带到这里的节点专家那里(我' 我假设这很简单,我只是错过了一些东西)。这是我的代码:

谢谢!

0 投票
1 回答
1409 浏览

javascript - event-stream.through 和 event-stream.map 有什么区别

根据event-stream中的文档,这两种方法的区别似乎是同步或异步。但我仍然不确定差异的真正含义。

0 投票
1 回答
212 浏览

java - 如何在 Android 应用程序 (Java) 中连接到 Rails SSE 流媒体页面?

我在后端设置了一个 Rails 路由,用于ActionController::Live流式传输服务器发送的事件(HTML5 SSE,内容类型数据/事件流)。理想情况下,我想在我的 Android 前端使用一些 Java 库直接与此路由交互,以处理服务器发送的事件。但是,除了 SSE 的 Java 后端 (J2EE) 库之外,我似乎找不到任何其他东西。我的问题是双重的:是否存在 Java/Android SSE 客户端库,如果没有,是否存在 SSE 最终抽象为的更简单的方法(例如,它们只是 websocket 的一种美化形式或类似的东西)这样我可以使用其他类型的库或普通的 Android 网络吗?

0 投票
1 回答
41 浏览

javascript - event-stream.js 我如何引用每一行 IE (0) , (1) 等

好的,我的 node.js 脚本中有一个使用事件流模块的函数。

我可以使用下面的简单脚本检查行数据,但我也希望能够使用每一行。我想要的例子

我目前正在使用的脚本

然后我就这样称呼它

这像预期的那样工作,但我如何制作这个功能,所以我可以像这样使用它..

显然这不起作用,但我怎样才能使它起作用

0 投票
1 回答
1553 浏览

python - Firefox 断开连接后,Flask sse-stream 未终止

我正在尝试创建一个使用 sse 将数据流式传输到客户端的 Flask 服务器。下面的一段测试代码似乎可以解决问题,但我偶然发现了一个与处理客户端断开连接相关的问题。

使用 Firefox 作为客户端(版本 28 或 29)时,数据按预期开始流式传输。但是,当我重新加载页面时,会打开一个新流(如预期的那样),但旧流仍然存在。处理流的 eventgen() 线程永远不会终止。在其他客户端上(我使用 Yaffle 的 Polyfill EventSource 实现以及 Chrome 尝试了 IE),重新加载或关闭页面会导致客户端断开连接,从而导致服务器端套接字错误 10053(客户端与主机断开连接)。这将终止循环并仅使活动流保持活动状态,这是预期的行为。

使用 Process Explorer,我注意到客户端 (Firefox) 端的 TCP 连接挂起状态为 FIN_WAIT2,而服务器端的连接挂起状态为 CLOSE_WAIT。奇怪的是,在运行 Firefox 的 3 台机器中的 1 台(全部为 Win 7 x64)上,我对此进行了测试,断开连接得到了正确处理。在 Python 2.6.5 和 2.7.6 上运行产生了相同的结果。

我还尝试用基于 greenlet 的 gevent WSGIserver 替换内置的 Flask 服务器,但这会导致完全相同的行为。此外,应该使用某种形式的线程/小事件,否则运行 eventgen() 循环会阻塞服务器。

下面的测试代码在浏览到 localhost:5000 时为 make_html() 中定义的页面提供服务,并打开到 /stream 的流。该流显示格式为 {"content": 0.5556278827744346, "local_id": 4, "msg": 6} 的消息,其中 local_id 是打开的流的 id,msg 是该流中当前消息的编号。

0 投票
1 回答
707 浏览

node.js - 事件流是否支持 nodejs 中的非 utf-8 编码?

我正在尝试按如下方式逐行上传和解析文件:

但不幸的是,我在 utf-8 编码中得到了 'line' 字符串。是否可以防止事件流更改编码?

0 投票
1 回答
454 浏览

javascript - 使用 bacon.js 事件流池实现生产者/消费者

我想用一个 bacon.js 事件流池来实现生产者消费者模式。这是我要解决的具体问题:

我有一个“n”网址列表。我想创建事件流来为这些 url 发出 http 请求,但我想一次将其限制为 'x' 流('x' 网络请求)。在上述流的事件处理程序中,我创建了一个将 http 响应写入文件的新事件流。但我想一次将写入文件的流数限制为“y”。

在 Gevent/Java 中,我会创建适当大小的线程池并使用适当线程池中的线程。我如何为事件流做类似的事情?

0 投票
2 回答
62677 浏览

javascript - 如何正确删除节点 js eventemitter 中的事件侦听器

我设置了一个 GET 和一个 POST 路由,想法是 POST 到该路由会触发一个事件,而 GET 路由是一个服务器发送的事件流,每次触发 POSTed 事件时都会触发......但是,我认为我做错了什么,因为尽管只有一个事件流订阅者,但似乎经常添加事件侦听器......我做错了什么?