2012-11-18 55 views
0

我想在使用TideSDK 1.3.1-beta的桌面应用程序中使用Server Sent Events。代码在通过基于webkit的浏览器查看本地主机上完美运行,但是通过TideSDK运行该程序时,完全没有任何事情发生。HTML5服务器发送的事件在TideSDK中不起作用

我使用的JavaScript是这样:

<script> 
var source=new EventSource("demo_sse.php"); 
source.onmessage=function(event) 
{ 
document.getElementById("result").innerHTML+=event.data + "<br>"; 
alert(event.data); 
} 
</script> 

而且demo_sse.php页面看起来是这样的:

<?php 
header('Content-Type: text/event-stream'); 
header('Cache-Control: no-cache'); 

$time = date('r'); 
echo "data: The server time is: {$time}\n\n"; 
flush(); 
?> 

我知道这是不是只是一些愚蠢的错误,因为,就像我说的那样,它在浏览器中完美运行,但是当通过TideSDK运行时,什么都不会发生。 我解决这个问题非常重要。如果有人能提供任何见解,请告诉我。

PS:很奇怪,我注意到:如果我使用“应用程序”作为EventSource的协议,如EventSource("app://demo_sse.php");程序控制台前,立即崩溃可以输出大约预处理demo_sse.php文件中的行。

+0

这可能是一个重要的信息。奇怪的是,我在远程服务器上使用了一个php文件,例如'var source = new EventSource(“http://somedomainame.com/demo_sse.php”);'在TideSDK中工作得很好。我想在TideSDK的一面有一些关于php的问题。也许它不喜欢内容类型头?我该如何解决这个问题? –

回答

0
<?php 

header('Content-Type: text/event-stream'); 

header('Cache-Control: no-cache'); 

$time = date('r'); 

echo "data: The server time is: {$time}\n\n"; 

flush(); 

?> 
<script> 

var source=new EventSource("demo_sse.php"); 

source.onmessage=function(event) 

{ 

document.getElementById("result").innerHTML+=event.data + "<br>"; 


alert(event.data); 

} 

</script> 
相关问题