如何在PHP中实现event-stream

   2024-09-30 9770
核心提示:在 PHP 中实现 event-stream,可以使用 Server-Sent Events (SSE)创建一个 PHP 文件(例如:sse.php),并设置正确的头信息以启

在 PHP 中实现 event-stream,可以使用 Server-Sent Events (SSE)

创建一个 PHP 文件(例如:sse.php),并设置正确的头信息以启动 event-stream:
<?phpheader('Content-Type: text/event-stream');header('Cache-Control: no-cache');header('Connection: keep-alive');header('X-Accel-Buffering: no'); // 对于 Nginx 服务器// 生成事件数据function send_message($id, $data, $event = '') {    echo "id: $id" . PHP_EOL;    if ($event != '') {        echo "event: $event" . PHP_EOL;    }    echo "data: $data" . PHP_EOL;    echo PHP_EOL;    ob_flush();    flush();}$serverTime = time();send_message($serverTime, 'Hello, this is a message from the server!');// 模拟事件流for ($i = 0; $i < 10; $i++) {    sleep(1);    $serverTime = time();    send_message($serverTime, 'This is message ' . ($i + 1));}
在 HTML 文件中,创建一个 EventSource 对象来连接到上面创建的 PHP 脚本:
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">   <title>Event Stream Example</title></head><body>    <ul id="event-log"></ul>   <script>        const eventSource = new EventSource('sse.php');        eventSource.onmessage = function (event) {            const data = JSON.parse(event.data);            const listItem = document.createElement('li');            listItem.textContent = `Message ID: ${data.id}, Message: ${data.message}`;            document.getElementById('event-log').appendChild(listItem);        };        eventSource.onerror = function (error) {            console.error('Error occurred:', error);        };    </script></body></html>
将这两个文件放在 Web 服务器上,并通过浏览器访问 HTML 文件。你应该能看到来自 PHP 脚本的事件消息。

注意:确保您的 Web 服务器支持 PHP,并已正确配置。同时,确保在 JavaScript 代码中使用正确的路径来引用 PHP 文件。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号