从服务器检索数据,其中SSE的名称不是"数据:"

时间:2015-07-30 09:02:28

标签: javascript php jquery server-sent-events

所以我正在编写这个基本的自定义jQuery插件,可以处理基于Server-Sent Events的动画进度条(现在:我计划处理Websocket和Long-Polling Ajax)。

我愿意知道服务器发送的数据是否有任何方式可以区别命名。到目前为止,我已经读过服务器必须输出如下内容:

header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
for($i = 0; $i < 100; $i++) {
    echo 'data:'.$i."\n\n"; // must be data: and not something else!
    flush();
    sleep(1);
}

所以可以使用

检索它
var stream = new EventSource('/api');
stream.onmessage = function(e) {
     console.log(e.data); // outputs $i as it is sent by server every second
}

因此,我想知道服务器发送的数据是否被命名为data:,因为它可以在客户端读取,或者它可以有其他名称?(然后使用e.anotherName在客户端读取它)。我不想去创建一个JSON对象服务器端,因为它会非常复杂地手动设置这个插件。

所有这一切背后的目的是,为了使进度条进展,我需要一个百分比,只能通过服务器端的最大值$i和当前值来计算。如果你能想出另一种方法来获得这个百分比而不输出第一次事件的总数,我也愿意知道。

感谢。

1 个答案:

答案 0 :(得分:1)

&#39;数据:&#39; SSE是强制性的,但它也支持&#39; id&#39;和&#39;事件&#39;这可以帮助您,请查看link