问题标签 [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.
python - 服务器从 Flask 向多个客户端发送事件
我正在玩一个小项目,以更好地了解 Web 技术。一项要求是,如果多个客户可以访问我的网站,并且其中一个进行了更改,则应通知所有其他客户。从我收集的服务器发送事件来看,似乎可以做我想做的事。但是,当我在 Firefox 和 Chrome 中打开我的网站并尝试发送事件时,只有一个浏览器会收到它。如果我再次发送一个事件,只有一个浏览器会收到新事件,通常是没有收到第一个事件的浏览器。
这是相关的代码片段。
客户:
服务器:
我的问题是,如何将事件发送到所有连接的客户端,而不仅仅是一个?
php - SSE(事件源)flush() PHP
在家里,我正在尝试创建一个 SSE 端点以在网站上使用,真的。然后,我有保持请求打开的代码片段,显然是(while( true )
)......然后,我回显了一些东西,然后在里面使用ob_flush()
和flush()
。
但是,在家里它可以正常工作,在远程主机上,没有。
本地主机定义。
System: Linux localhost 3.6.10-2.fc17.x86_64 #1 SMP Tue Dec 11 18:07:34 UTC 2012 x86_64
Server API: Apache 2.0 Handler
在服务器中......(远程)
Linux web521.xxx.net 3.2.2 #1 SMP Wed Feb 1 09:54:51 BRST 2012 x86_64
Server API FPM/FastCGI
代码片段:
php - 使用服务器发送事件广播消息
我想实现一个简单的服务器发送事件应用程序,其中客户端侦听这样的 php 文件
但是然后我需要能够广播一条消息,并且每个连接的客户端都会同时收到它。
php 文件将由另一个请求触发,它将向所有客户端“回显”一些 SSE 数据。
这可能吗?我可以采取其他路线吗?
先感谢您
javascript - 避免与服务器发送事件相同的数据
我正在使用服务器发送的事件通过 Web 应用程序将新数据推送给用户。我想避免显示两次相同的数据。我的想法是按照 Mozilla 文档的建议使用 e.lastEventId。
test_stream.php 中显示的数据:
id:3 数据:测试
JS 脚本:
问题 :
“测试”每 3 秒显示一次,而不是仅显示一次,直到有新数据出现。我得到了 ID,但看起来如果我在 js 脚本中的“if”不起作用......有什么想法吗?
html - 服务器端的服务器发送事件成本
如果我正确理解了服务器发送事件的原则,那么每次客户端注册到 EventSource 时,它实际上都会打开一个新的 HTTP 连接到管理事件的资源。与其他 HTTP 请求相反,连接保持活动状态,因此专用于该客户端的服务器进程/线程继续运行,直到客户端断开连接。
如果我们有 1000 个客户端使用 SSE 连接到应用程序怎么办?我们是否会同时运行 1000 个进程/线程(做同样的事情)来处理 SSE?我想我错了,但如果我不是,它真的比通常的 AJAX 轮询方法更有效吗?至少服务器不需要同时运行那么多进程/线程?
javascript - Firefox 失去与 eventSource 的连接
我正在使用服务器发送事件来运行社交提要并实时更新它。
Javascript代码:
我的 PHP 发送的内容:
问题:脚本运行良好,但 10 秒后 +-。Firefox 似乎失去了连接并且没有插入新数据。在 Safari 和 Chrome 中没有问题。
html - 使用 Server sent Event 和 node.js 构建聊天应用程序
我是 node.js 和 SSE 的新手。我想使用 SSE 和 node.js 创建一个聊天应用程序。谁能指导哪个更好的 SSE 或 websocket?IE7+ 是否有使用 js 而不是 php 的 IE 填充
请建议。
提前致谢。
php - 服务器发送的事件和 php - 什么触发服务器上的事件?
全部,
HTML5 Rocks 有一个关于服务器发送事件 (SSE) 的不错的初学者教程:
http://www.html5rocks.com/en/tutorials/eventsource/basics/
但是,我不明白一个重要的概念 - 是什么触发了服务器上导致发送消息的事件?
换句话说 - 在 HTML5 示例中 - 服务器只发送一次时间戳:
如果我正在构建一个实际示例——例如,Facebook 风格的“墙”或股票行情,其中服务器会在每次数据更改时向客户端“推送”一条新消息,它是如何工作的?
换句话说... PHP 脚本是否有一个连续运行的循环,检查数据的变化,然后在每次找到时发送一条消息?如果是这样 - 你怎么知道什么时候结束这个过程?
或者 - PHP 脚本是否只是发送消息,然后结束(在 HTML5Rocks 示例中似乎就是这种情况)?如果是这样 - 您如何获得持续更新?浏览器是否只是定期轮询 PHP 页面?如果是这样 - 那是一个“服务器发送的事件”吗?这与在 JavaScript 中使用 AJAX 定期调用 PHP 页面的 setInterval 函数有何不同?
抱歉 - 这可能是一个非常幼稚的问题。但是我找不到的例子都没有说明这一点。
[更新]
我认为我的问题措辞不佳,所以这里有一些澄清。
假设我有一个网页应该显示 Apple 股票的最新价格。
当用户第一次打开页面时,页面会使用我的“流”的 URL 创建一个 EventSource。
我的问题是——“stream.php”应该如何工作?
像这样?(伪代码):
换句话说 - 只要客户端“连接”到它,“stream.php”就保持打开状态吗?
如果是这样 - 这是否意味着您运行stream.php
的线程数与并发用户数一样多?如果是这样 - 这是远程可行的,还是构建应用程序的适当方式?你怎么知道什么时候可以结束一个实例stream.php
?
我的天真印象是,如果是这样的话,PHP不适合这种服务器。但是到目前为止我看到的所有演示都暗示 PHP 对此很好,这就是为什么我如此困惑......
python - 如何知道瓶子中的客户端连接状态?
我正在使用瓶子框架测试服务器发送的事件网站。问题是客户端断开连接后,服务端仍然不停的发送消息,导致断管异常。瓶子里有没有办法知道连接状态?像 ASP.NET 中的 IsClientConnected 之类的东西?
apache - 服务器发送事件连接未与 Apache/Thin/Sinatra 保持打开状态
我正在尝试使用 Apache/Thin/Sinatra 设置基本的服务器端事件功能。当我直接运行瘦服务器时,一切都按预期工作。当我使用 RackBaseURI 配置设置通过 Apache 运行瘦服务器时,一切仍然有效,但连接没有保持。它经历了一个打开的周期,将一些数据写入浏览器并立即关闭。似乎是 Apache 配置问题?
我已经浏览了 Apache 配置,没有看到任何看起来会阻止打开连接的东西。因为我不确定错误在哪里,所以我不想发布无休止的配置数据,所以如果我遗漏了一些东西,我可以包含更多......
sinatra (1.3.4)、thin (1.5.0)、Apache/2.2.22 (Ubuntu)、ruby 1.8.7
JavaScript...
服务器端 sinatra/ruby..
编辑:
这是我在浏览器控制台中看到的输出......