EventSource 如何能实现实时返回呢?

EventSource 前端为什么不能实时返回数据,每次都会在在最后一起返回呢?

img


图片中的情况不是间隔输出的,而是在接口请求结束后一次性返回的,很头疼!

前端是异步读取的么?看下你的前端代码怎么写的

EventSource是客户端与服务器之间的一种协议,它允许服务器向客户端推送数据,从而实现实时的数据传输。在使用EventSource实现实时返回时,一般采用以下的步骤:

  1. 在服务端建立一个与客户端保持长连接的HTTP请求,HTTP响应头需要设置Content-Type为text/event-stream,在响应体中返回一些初始数据;

  2. 服务器端向客户端定时发送数据,这些数据是被包装在特定的格式内的,格式如下:

event: <event_name>
data: <data>

其中,event_name是事件名,data是事件的数据内容。

  1. 当客户端收到数据后,会根据数据的格式自动解析,然后调用相应的回调函数进行处理。

使用EventSource实现实时返回的关键点在于长连接的建立和维护。因为使用长连接,服务端会不断向客户端发送数据,所以在实践中需要注意以下几点:

  1. 使用EventSource的开销较大,需要专门的服务器端支持;

  2. 需要定时发送数据,需要考虑如何合理地设置数据返回的时间间隔,避免频繁地向客户端发送数据导致服务端负载过大;

  3. 需要处理连接断开的情况,并在连接断开时及时关闭连接,防止资源的浪费。

总的来说,使用EventSource可以实现实时返回的功能,但实现的过程需要技术细节的考虑和把握,需要根据实际情况进行合理的设计和实现。