问题标签 [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 投票
0 回答
499 浏览

reactive-programming - 如何发送大通量 to Spring Web Flux via POST?

Currently, working on developing reactive web applications for data processing application. I have a back-end service written in Spring WebFlux accepts applcation/stre

Currently, working on developing reactive web applications for data processing application. I have a back-end service written in Spring WebFlux accepts applcation/stream+json as a media type.

I am trying to send a array of json documents in the request body. The number of documents depends on the number of products being uploaded. Typically (250 to 10000) payloads can be uploaded. I want to send these payloads to the URL, POST http://localhost:8080/products using Angular 5.

Request Body [{ "id": "B001", "description": "T-Shirt", "price": 250 }, { "id": "B002", "description": "Shirt", "price": 220 }, { "id": "B003", "description": "Jeans", "price": 210 }, ......]

The problem is, some times takes only 25 or 49 or 55 or 0 payloads in the backend. However, I am able to see sending all the payloads in the request (Browser Network terminal).

I think, i have to send these request using Event Source in angular 5, However, I am unable to find some examples. Your inputs are much appreciated!!.

Thanks!!


I think you need to use egrep with appropriate regex for you. At first glance this one is good:

0 投票
0 回答
207 浏览

playframework - Akka-SSE(已弃用的 Ok.feed)

我一直在使用 Akka SSE,发现在客户端使用 javascript 可以轻松理解 SSE。 http://runkalrun.blogspot.in/2016/01/server-sent-events-sse-using-scala-akka.html

唯一的问题是,该Ok.feed()方法在 play 2.6 中已被弃用,尽管我们可以使用Ok.chunked()使用 Source 作为参数的方法。该示例使用一个Concurrent.broadcast,它给出了枚举流和一个通道。如何使用流和通道来分块事件?如果有人对此进行了研究,甚至欢迎任何形式的建议。

ps 我正在使用 play Scala。

0 投票
0 回答
278 浏览

python - webook 后向 EventSource 发送响应(Flask + uWSGI + nginx)

我有带有路由(webhook)的 Flask 应用程序从外部电话应用程序(来电 = POST 请求)接收 POST 请求(webhook)。此路由设置 threading.Event.set() 并基于此事件,另一个路由 (eventsource) 将事件流发送到由另一个路由 (eventstream) 创建的网页上打开的 EventSource 连接。

在纯 Python 应用程序中进行测试时,一切都很好。问题开始了,当我将它移动到生产服务器时,我将 uWSGI 与 nginx 一起使用。(这个 Python 应用程序的其他部分可以正常工作。)

当打开 eventSource 连接并且应该处理传入的 webhook 时,整个烧瓶服务器卡住(对于所有其他用户也是如此),页面停止加载并且我找不到错误所在。我只知道,收到了来自外部应用程序的 POST 请求,但没有对 EventSource 做出响应。我怀疑它与进程有关——来自 JavaScript 的 EventSource 连接是一个进程,webhook 路由是另一个进程——它们不通信。左右,我想这必须有非常微不足道的解决方案,但我在过去的 3 天三夜没有找到它。请问有什么提示吗?提前致谢。

要完整,这是我的 uwsgi 配置文件:

0 投票
1 回答
2919 浏览

javascript - EventSource:总是出错

为了开始使用EventSourceAPI,我编写了最具学术性的示例。问题是我总是出错,我找不到任何有用的信息。当我加载home.html时,JS 脚本在source.onerror; 我将它打印到控制台但分析对象我找不到任何错误类型或消息,所以我不知道它出了什么问题。代码中有错误吗?可能是与服务器有关的错误?


home.html

sse.js

source.php

0 投票
1 回答
266 浏览

servicestack - 带有 ServiceStack 的 SSE 不能与 netscaler 一起使用

我们的应用程序使用 ServiceStack 并利用 SSE。客户的站点之一尝试使用 Netscaler 背后的应用程序,但是每次从客户端发出请求并且 SSE 不起作用时,事件流连接都会中止。在没有 Netscaler 的情况下直接使用 Web 服务器时,SSE 工作正常。

任何想法?

0 投票
1 回答
246 浏览

php - 服务器端事件是否需要循环返回多个值?

我正在尝试在 php 上学习服务器端事件。

起初,几乎每个示例在服务器端都有一个循环,并使用 ob_flush()/flush() 返回值。所以我试着这样做:

和 javascript :

但是在脚本结束之前什么都没有收到......所以我最终尝试没有无限循环并且一切正常

编辑:没关系,我之前可能在某个地方犯了一个错误,因为现在它可以工作了

编辑:我的意思是使用 ob_flush/flush 返回多个结果的循环(不是无限循环,我的错)

但是我是否需要通过多次刷新来返回我的数据以获得服务器端事件的性能?

更新 :

从我的测试和研究来看,似乎 php 不允许多个会话,这使得第一个示例阻止对服务器的任何其他调用。因此,唯一有效的 php 解决方案似乎每次都返回值。我认为这与对服务器进行多次定时 ajax 调用是一样的。

我猜如果我真的想从服务器流式传输一个值,那么我可能应该在我的 web 应用程序一侧使用 nodejs。

0 投票
1 回答
712 浏览

java - Spring WebFlux 休息控制器仅服务于前两个订阅

有一个由Flux.create方法以编程方式创建的通量:

有一个休息控制器:

有几个 Web 客户端(在独立进程中):

JavaScript 中有几个 EventSource 实例:

只有前两个“订阅者”会开始接收消息(无论是 Web 客户端还是 EventSource 实例)。另一个将打开连接,获得 HTTP 200 状态,但事件流保持为空。客户端或服务器端都没有错误。

我不明白,对“2 个订阅者”的限制在哪里。如果我想支持超过 2 个订阅者,我该怎么做?

该应用程序使用 Spring Boot 2.0.0.RELEASE 构建并使用 spring-boot-starter-webflux 自动配置。默认配置没有改变。

0 投票
1 回答
1575 浏览

javascript - 使用事件源同步获取数据

我有一些关于EventSource. 我可以轻松获取数据,例如我可以将数据写入控制台。但是,我想从这个函数返回这个数据。它没有返回,因为有一些延迟并且它返回未定义。

我怎样才能做到这一点?

0 投票
1 回答
92 浏览

java - 如何更改 Jersey EventInput 使用的分隔符

我需要订阅 SSE(服务器发送事件)。我知道标准说事件之间的分隔符应该是“\r\n\r\n” - 在此处的语法中检查“行尾”:

https://html.spec.whatwg.org/multipage/server-sent-events.html#parsing-an-event-stream

但我应该消费的流不符合标准并用'\ n'分隔。

我决定对 Jersey EventInput 类进行替代实现,您可以在此处看到:

https://github.com/jersey/jersey/blob/12e5d8bdf22bcd2676a1032ed69473cf2bbc48c7/media/sse/src/main/java/org/glassfish/jersey/media/sse/EventInput.java

所以我的实现将复制 EventInput 唯一的区别 - 指定的分隔符。它看起来像:

编译器完全接受我的实现,但是当我尝试运行它时,它不起作用!它挂在以下行:

如果我执行以下操作,则可以正常工作:

我开始调试,发现 Jersey 使用了一个名为 MessageBodyFactory 的类,它执行如下检查:

if (model.isReadable(c, t, as, mediaType))

https://github.com/jersey/jersey/blob/12e5d8bdf22bcd2676a1032ed69473cf2bbc48c7/core-common/src/main/java/org/glassfish/jersey/message/internal/MessageBodyFactory.java#L685

他们在那里检查您的班级是否是有效的读者。有效的读者是通过以下方式获得的(至少在我看来,在调试时......):

所以我的问题是......如何将 MyEventInput 注册为有效的阅读器,以便我可以使用它来订阅使用自定义分隔符分隔的 SSE 流?

0 投票
0 回答
493 浏览

angularjs - 如何模拟服务器发送事件 SSE aka EventSource?

在我的 angularjs 应用程序中,我具有以下方式使用 SSE 的功能。代码在第三方库中,

现在我想在我的protractor代码中模拟这个,我可以用它httpBackend来模拟请求但是返回适当eventstream响应和触发事件的正确方法是什么?