首页 » SEO优化 » php模仿数据给前端技巧_用PHP模仿ChatGPT聊天效果实现逐字打印返回数据

php模仿数据给前端技巧_用PHP模仿ChatGPT聊天效果实现逐字打印返回数据

访客 2024-11-16 0

扫一扫用手机浏览

文章目录 [+]

public function stream() { header('Content-Type: text/event-stream'); header('Cache-Control: no-cache'); header('Connection: keep-alive'); // 建立连接后,您可以输出初始化数据到客户端 echo "event: sse_init\ndata: {}\n\n"; flush(); // 监听事宜源,并输出实时事宜 while (true) { $event = 'my_event'; // 获取要发送的事宜数据 $data = 'Hello SSE!'; // 输失事宜到客户端 echo "event: $event\ndata: $data\n\n"; flush(); // 休眠一段韶光等待下次事宜 sleep(1); }}

上述代码会不断地监听 “my_event” 事宜源,并将数据 “Hello SSE!” 输出到客户端。
在每个事宜发送之间,脚本会等待一秒钟以仿照实时数据流。

也可以用thinkPHP的标准返回方法:

php模仿数据给前端技巧_用PHP模仿ChatGPT聊天效果实现逐字打印返回数据

public function stream() { $response = new Response(); $response->header('Content-Type', 'text/event-stream'); $response->header('Cache-Control', 'no-cache'); $response->header('Connection', 'keep-alive'); // 建立连接后,您可以输出初始化数据到客户端 $response->data("event: sse_init\n"); $response->data("data: {}\n\n"); // 监听事宜源,并输出实时事宜 $count = 0; while (true) { $event = 'my_event'; // 获取要发送的事宜数据 $data = 'Hello SSE! ' . ++$count; // 输失事宜到客户端 $response->data("event: $event\n"); $response->data("data: $data\n\n"); $response->send(); // 休眠一段韶光等待下次事宜 sleep(1); }}

然后在前端用js吸收事宜流:

php模仿数据给前端技巧_用PHP模仿ChatGPT聊天效果实现逐字打印返回数据
(图片来自网络侵删)

var source = new EventSource("<?php echo url('stream'); ?>");source.addEventListener('my_event', function(event) { console.log(event.data);});

然后就会创造,并没有期待的效果涌现,并且浏览器会报错:EventSource's response has a MIME type ("text/html") that is not "text/event-stream". Aborting the connection.这个问题卡了良久,PHP中已经设置了相应格式为text/event-stream,但是浏览器吸收到的仍旧是text/html格式,彷佛$response->header('Content-Type', 'text/event-stream');这句代码没有生效一样;后来经由多方调查,thinkPHP利用了数据缓冲来输出内容,这会导致有些相应格式没有生效,以是在上面的PHP代码中添加ob_end_flush();办理问题。
以下是精确的PHP代码示例:

public function stream() {// 关闭输出缓冲ob_end_flush(); header('Content-Type: text/event-stream'); header('Cache-Control: no-cache'); header('Connection: keep-alive'); // 建立连接后,您可以输出初始化数据到客户端 echo "event: sse_init\ndata: {}\n\n"; flush(); // 监听事宜源,并输出实时事宜 while (true) { $event = 'my_event'; // 获取要发送的事宜数据 $data = 'Hello SSE!'; // 输失事宜到客户端 echo "event: $event\ndata: $data\n\n"; flush(); // 休眠一段韶光等待下次事宜 sleep(1); }}

标签:

相关文章

QQ聊天恶搞代码技术背后的趣味与风险

人们的生活越来越离不开社交软件。在我国,QQ作为一款历史悠久、用户众多的社交平台,深受广大网民喜爱。在QQ聊天的过程中,恶搞代码的...

SEO优化 2025-03-02 阅读1 评论0

Python代码截屏技术与应用的完美融合

计算机屏幕截图已经成为人们日常生活中不可或缺的一部分。无论是分享工作成果、记录游戏瞬间,还是保存网页信息,屏幕截图都发挥着重要作用...

SEO优化 2025-03-02 阅读1 评论0

QQ无限刷礼物代码技术突破还是道德沦丧

社交平台逐渐成为人们生活中不可或缺的一部分。QQ作为我国最具影响力的社交软件之一,其丰富的功能吸引了大量用户。近期有关QQ无限刷礼...

SEO优化 2025-03-02 阅读1 评论0