在javascript中使用“x-dom-event-stream”流?

时间:2010-04-01 16:00:14

标签: javascript html5 streaming

HTML5草稿包含一个名为EventSource的API,用于通过javascript仅使用一次服务器调用来传输数据(通知)。

查一下,我在javascript部分Opera Labs找到了一个例子:

document.getElementsByTagName("event-source")[0]
        .addEventListener("server-time", eventHandler, false);

function eventHandler(event)
{
    // Alert time sent by the server
    alert(event.data); 
}

和服务器端部分:

<?php
header("Content-Type: application/x-dom-event-stream");
while(true) {
    echo "Event: server-time\n";
    $time = time();
    echo "data: $time\n";
    echo "\n";
    flush();
    sleep(3);
}
?>

但截至今天,似乎只有Opera已经实现了API,Chrome和Safari都没有工作版本(我在这里错了吗?)

所以我的问题是,在javascript中有没有其他方法,可能更复杂,使用这一个流来获取数据?

编辑:我现在正在看Comet的东西,但我不知道如何重用:) 编辑2:Apparentry,“x-dom-event-stream”现已更名为“text / event-stream” 编辑3:从javanet

中了解这个recent article的方法

3 个答案:

答案 0 :(得分:1)

请参阅Orbited,它提供了一个javascript库和服务器。 javascript库尝试使用WebSockets并回退到长轮询或其他方法。

这是一个很好的指南:http://thingsilearned.com/2009/08/03/starting-out-with-comet-orbited-part-3-%E2%80%93-the-client/

答案 1 :(得分:0)

嗯,Google真的是我的朋友,经过长时间的搜索,我发现了Ericson Labs的这个剧本(?!)

https://labs.ericsson.com/apis/eventsource/

从他们的页面:

  

EventSource启用程序允许您   使用即将推出的Event Source API   任何当前的Web浏览器。只是   包括你的启动库   页面,您可以使用API​​。   用户代理实现事件时   源API本身,你的   申请将立即和   透明地开始使用原生   实施

然而,此解决方案需要爱立信的API密钥,不能用于商业应用程序,这对我来说不是最好的解决方案:(

所以如果你有更好的方法..

答案 2 :(得分:0)

查看Kaazing Open Gateway。我相信它与爱立信api的工作方式类似,因为它可以透明地切换到使用本机实现。我认为它提供了eventsource和websockets。