2013-02-09 46 views
4

昨天我潜入服务器发送的事件,因为它们是创建我创建的在线游戏的新闻源的好方法。我有一个可以订阅我的订阅源的工作脚本,以及一个脚本,可以在几分钟内从MySql数据库中获取新闻源,但由于某种原因,它每次都会断开连接...(并且每隔3秒重新连接一次,我使用服务器发送事件(和Javascript/PHP)的连接不断下降

var source = new EventSource('http://theobg.itselementary.site50.net/gamefeed.php'); 
source.onmessage = function(e) { 
    $("#gamefeed").html(e.data); 
} 

的PHP我使用的是::

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

function sendMsg($id, $msg) { 
    echo "id: $id" . PHP_EOL; 
    echo "data: $msg" . PHP_EOL; 
    echo PHP_EOL; 
    ob_flush(); 
    flush(); 
} 

//The file for connecting to my database here... 
$gameid = 1; 

$serverTime = time(); 
//Some mysql query to get the gamefeed from the database here..., gamefeed is structured like this: NEWS&OTHERNEWS&OLDERNEWS&EVENOLDERNEWS 

sendMsg($serverTime, $gamefeed); 

?> 

我看了所有的地方不是仅仅使用AJAX与例如一定的时间间隔)

的JavaScript我使用的是更好互联网,但一切似乎对我来说都很好,除了f或者这个连接并没有“保持活力”,我不知道为什么这样......任何人都可以帮助我?

由于提前, Dalionzo

回答

2

你需要检查的数据,并使用循环发送。

<?php 
while(true){ 
    //check for updates here 
    if($updates){ 
     sendMsg($id,$data); 
    } 
    sleep(1);//loosen it up 
} 

此外,为了更容易编码,您可以尝试我的php库服务器发送事件。 Here

+0

感谢您的回复,但所做的只是发送无限更新到我的主页,导致它崩溃;我完全忽略了这一点吗?或者我仍然需要弄清楚并添加自己的代码来检查数据是否发生了变化? – Dalionzo 2013-02-09 17:05:20

+0

你需要添加一个睡眠呼叫来放松它。 – Licson 2013-02-10 00:36:31

+0

我发布了一个新逻辑,请检查它。 – Licson 2013-02-10 00:58:20

相关问题