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的方法答案 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。