服务器发送的事件只处理字符串吗?

时间:2014-01-08 00:15:56

标签: javascript php json server-sent-events

我正在使用SSE流式传输内容,而无需刷新网页。基本上我的主要程序如下:

$query = "SELECT something something";
$result = $mysqli->query($query);
// ^this will return multiple rows eventually

$content= array();
while($inside= $result->fetch_assoc()){     

        array_push($content,$inside);

        }

//$content is now an array with multiple rows, all inserted corrected by debug

$final = json_encode($content);
//^ the json is encoded as supposed [{"something":"something"},{"another":...}]

echo "data: {$final}";
//^ which I then receive with javascript (or at least I want to).
flush();

事情是javascript中没有收到任何内容。没有错误,没有console.logs,什么都没有。我试图在javascript中使用json,但它只是感觉可怕(根本没有json)。这不可能吗?如果是这样的话怎么办呢? (我已经测试了time()并且javascript正在完全正常地转储数据


编辑:JAVASCRIPT

var source=new EventSource("test.php");
    console.log("1");
    source.onmessage=function(event)
      {
            console.log("inside .onmessage !!!");
            var data = event.data;
            //data.forEach(function(each){
            //  console.log(each);
            //});
                //var data = JSON.parse(event.data);
            console.log(data);
      };

评论的部分与我的问题有关。所有其他行都使用time()函数进行调试。

1 个答案:

答案 0 :(得分:3)

您似乎忘记了stream format

  

每条消息由一对换行符分隔。

尝试

echo "data: {$final}\n\n";