SSE-(发送的服务器事件/ EventSource)

问题描述 投票:2回答:2

我正在使用SSE (发送服务器事件/事件源)方法在我的应用程序中实时接收JSON API值。

我有一个json聊天API,到目前为止,我需要将它放在我的应用程序中。

我的问题如下,当我收到JSON值时,将其发送到EventSource,但是在EventSource中仅收到JSON的最后一行,请遵循以下代码:

<html lang="en">
<head>
<title>Using Server-Sent Events</title>
<script>
    var source = new EventSource("test.php");
    source.onmessage = function(event) {
        document.getElementById("result").innerHTML = event.data + "<br>";
    };
</script>
</head>
<body>
    <div id="result">
        <!--Server response will be inserted here-->
    </div>
</body>
</html>

*注意:我从'test.php'页面获取JSON。 *这是来自test.php的代码:

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

            $curl = curl_init();
            curl_setopt_array($curl, array(
              CURLOPT_URL => "https://api.chat-api.com/instance136679/messages?token=f2norkhlaffhhi83&chatId=5511986575416%40c.us",
              CURLOPT_RETURNTRANSFER => true,
              CURLOPT_ENCODING => "",
              CURLOPT_MAXREDIRS => 10,
              CURLOPT_TIMEOUT => 0,
              CURLOPT_FOLLOWLOCATION => true,
              CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
              CURLOPT_CUSTOMREQUEST => "GET",
              CURLOPT_HTTPHEADER => array(
                "Content-Type: application/json"
              ),
            ));
            $response = curl_exec($curl);
            curl_close($curl);
            $array = json_decode($response);
            $valor = null;
            foreach ($array->messages as $value) {
              $data = json_encode($value->body);
              $valor .= $data;
              echo "data: {$data}\n\n";
              flush();
            }
?>

这里是JSON文件(API向我发送了此文件:]:>

date: "Test1"
date: "Test2"
date: "Test3"
date: "Test4"
date: "Test5"
data: "CHAT API"

我从* EventSource *那里获得:

CHAT API
    

我正在使用SSE(发送服务器事件/事件源)方法在我的应用程序中实时接收JSON API值。我得到了一个json聊天API,到目前为止,我需要将其放入应用程序中。 ...

javascript php html server-sent-events
2个回答
0
投票

这里有多个问题。首先是您拼错了data:。它必须是data:,而不是date:


-2
投票

UP,我仍然无法解决问题

© www.soinside.com 2019 - 2024. All rights reserved.