问题标签 [server-sent-events]

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 回答
2650 浏览

php - HTML5 服务器通过 cURL 发送的事件

我正在尝试创建一个基于 HTML5 的通知系统,基于我的数据库中的表上发生的事情。我专门为此通知功能制作了表格。这是它的工作原理:

  1. 服务器发送事件页面 ( sse.html) 将参考source.php其通知内容。
  2. action.php包含通过向表中插入数据来触发内容更改通知的操作。
  3. source.php将定期检查表中的任何新数据。如果有的话,它应该通过一个通知。

我的问题是是否可以在不检查表格的情况下执行此操作?

我正在考虑使用 cURL 将内容直接发送到执行source.php操作时action.php。这可以做到吗?

Content-Type我已经看到将 HTTP 标头设置为的 cURL 使用text/event-stream,但我不确定如何使用它。

sse.html

source.php

0 投票
2 回答
16359 浏览

server-sent-events - 服务器发送的事件实际上是如何工作的?

所以我理解了服务器发送事件的概念(EventSource):

  • 客户端通过以下方式连接到端点EventSource
  • 客户端只监听从端点发送的消息

我感到困惑的是它在服务器上的工作方式。我看过不同的例子,但想到的是 Mozilla 的:http ://hacks.mozilla.org/2011/06/a-wall-powered-by-eventsource-and-server-sent-事件/

现在这可能只是一个不好的例子,但据我了解,服务器端的工作方式有点道理:

  • 数据存储中的某些更改,例如数据库
  • 服务器端脚本每 N 秒轮询一次数据存储
  • 如果轮询脚本注意到更改,则会向客户端触发服务器发送事件

那有意义吗?从准系统的角度来看,这真的是这样吗?

0 投票
2 回答
825 浏览

ajax - 获取文件上传进度的最佳 SSE 方法?

我正在为 AJAX 编写向后兼容的文件上传进度。在 HTML5 中有 xhr.upload.progress 事件;这将是非 XHR2 浏览器的替代方案。我正在使用 APC 扩展来监控进度。

现在,我的问题是:哪个是触发定制 xhr.upload.progress 事件的最佳方法?我计划使用 HTML5 SSE,但如果它们不受支持,我不确定我应该使用什么。

  1. 轮询:每隔几秒就对进度进行连续的 AJAX 请求
  2. 长轮询:显然比轮询更好?不过,我听说它们会导致服务器冻结,因为请求并没有真正在服务器上异步处理。所以,我假设我必须实现类似 NodeJS 的东西来避免这种情况。如果冻结问题只是被夸大/过分夸大了,我可能会选择长期投票。
  3. 永无止境的 iframe:iframe 似乎是个好主意,但我确信它存在问题。它是否也像长轮询一样冻结服务器?

编辑:我想,这是我最关心的问题。这些 AJAX 方法的可扩展性如何?EventSource SSE 是否也会冻结服务器的内存?如果是这样,我应该考虑使用 NodeJS 或 ScaleStack 之类的东西吗?而且,服务器开销对上传栏真的很重要吗?

0 投票
2 回答
9128 浏览

jquery - jQuery 和 AJAX 或服务器发送事件

似乎在这两种情况下,客户端都会向服务器发送请求和服务器应答,除非在服务器发送事件中您可以在服务器端代码中设置重试时间。那么使用 SSE 而不是 jQuery post 或 get 方法有什么好处吗?

0 投票
2 回答
375 浏览

websocket - 服务器发送的事件 - 仍然值得一试?

随着 WebSockets 似乎得到了更多的关注,并且能够完成服务器发送的事件可以(以及更多)的一切,SSE 是否仍然值得一试?

SSE 似乎更容易使用,但考虑到文章和库的数量,WebSockets 似乎是这里的明显赢家。

0 投票
1 回答
352 浏览

php - 服务器发送事件使我的浏览器崩溃

我有一个使用 SSE 更新可用表的 Web 应用程序。它读取 DB 的状态,无论是 1 还是 2,并相应地更新座位安排。

但是,我一直在经历我的浏览器崩溃(在运行应用程序时)并且很难重新制定该错误。我强烈怀疑它是导致错误的 SSE。

下面是我正在使用的 SSE 代码示例,是我使用错误还是 SSE 当前不稳定。我已经对此进行了很多谷歌搜索,但尚未找到解决方案。

我非常感谢您提供的任何建议或帮助。

0 投票
2 回答
2992 浏览

javascript - HTML5 服务器端事件:EventSource 与包装的 WebSocket

HTML5 服务器发送事件 (SSE) API 是否只是 HTML5 WebSockets 之上的受限、基于事件的 API?

在我看来, anEventSource只是一个WebSocket

  1. 不能.send()数据
  2. 使用text/event-stream格式
  3. 触发动态命名(服务器定义)的事件,而不是onmessage

Web 服务器将事件推送到客户端设备的想法非常有趣。这个 API 有什么吸引力吗?

我想异步事件模型在与 Node 结合使用时会很漂亮,但在我的 ASP.NET 世界中并没有看到很多这样的用例。

0 投票
2 回答
2523 浏览

ruby - 在 Sinatra 应用程序中处理事件流连接

有一个使用Konstantin Haase 的服务器发送事件的聊天应用程序的绝佳示例。我正在尝试运行它并遇到回调问题(我使用 Sinatra 1.3.2 并使用 Chrome 16 浏览)。它们根本不运行(例如在页面重新加载后),因此连接数正在增长。

此外,连接会在 30-60 秒内关闭,除非按照 Konstantin 在其他地方的建议,设置定期计时器来发送空数据。

你能复制它吗?如果是,是否有可能以某种方式解决这些问题?WebSockets 在这方面无缝地工作......

0 投票
1 回答
1294 浏览

tcp - TCP 握手:服务器发送的事件和 WebSocket?

我只是对网络技术不是很熟悉。

我想知道 SSE 和 WebSocket 什么时候都通过 HTTP 进行通信,在 HTTP 连接之前是否还有著名的 TCP 3 次握手?

如果是,WebSocket 将有两次 3 次握手?一个通过 TCP,第二个用于通过 HTTP 的升级方法?

提前致谢!

0 投票
8 回答
13317 浏览

apache - HTML5 服务器发送事件原型 - 模棱两可的错误和重复轮询?

我正在尝试掌握服务器端事件,因为它们完全符合我的要求并且看起来应该很容易实现,但是我无法克服一个模糊的错误,并且看起来连接反复被关闭并重新-打开。我所尝试的一切都是基于这个和其他教程。

PHP 是一个单一的脚本:

和 JavaScript 看起来像这样(在身体负载上运行):

我已经搜索了一下,但找不到关于

  1. 如果 Apache 需要任何特殊配置来支持服务器发送的事件,以及
  2. 我如何通过这种设置从服务器发起推送(例如,我可以简单地从 CLI 执行 PHP 脚本来推送到已经连接的浏览器吗?)

如果我在 Chrome (16.0.912.77) 中运行这个 JS,它会打开连接,接收时间,然后出错(错误对象中没有有用的信息),然后在 3 秒内重新连接并执行相同的过程。在 Firefox (10.0) 中,我得到了相同的行为。

编辑 1:我认为这个问题可能与我使用的服务器有关,所以我在 vanilla XAMPP 安装上进行了测试,并且出现了同样的错误。一个基本的服务器配置是否应该能够在不修改/额外配置的情况下处理这个问题?

编辑 2:以下是浏览器输出的示例:

谁能告诉我这是哪里出错了?我看过的教程使 SSE 看起来非常简单。此外,对我上面的两个编号问题的任何答案都会非常有帮助。

谢谢。