swoole与浏览器进行eventSource推送示例代码

代码语言:phpcli

所属分类:通讯

代码描述:swoole与浏览器进行eventSource推送示例代码,swoole使用定时器服务端主动推送消息,当浏览器eventSource关闭后,服务器端检测到后关闭定时器,这也是模拟chatgpt stream模式。

代码标签: swoole 浏览器 eventSource 推送 示例 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<?php

use Swoole\Http\Request;
use Swoole\Http\Response;

// 设置响应头
function setHeader(Response $response) {
    $response->header('Content-Type', 'text/event-stream');
    $response->header('Cache-Control', 'no-cache');
    $response->header('Connection', 'keep-alive');
}

// 发送事件
function sendEvent(Response $response, $event, $data) {
    $response->write("event:$event\n");
    $response->write("data:$data\n\n");
}


// 用于存储定时器ID的数组
$timerIds = [];

// 创建HTTP服务器
$server = new Swoole\Http\Server('0.0.0.0', 9502);

// 处理请求
$server->on('request', function(Request $request, Response $response) use(&$timerIds) {
  //  echo $request->server['request_uri']."\n";
    if ($request->server['request_uri'] == '/html') {
        // 返回一个文件上传表单
        $response->end('
            <script type="text/javascript">
                const data = new EventSource("/test");
                data.onmessage = function(event) {
                  document.body.innerHTML += event.data + \'<br>\';
                };
                setTimeout(function(){
                  data.close();
                },5.........完整代码请登录后点击上方下载按钮下载查看

网友评论0