关于webman使用SSE上下文如何处理

luoyue

问题描述

我想知道以下代码有没有问题,会不会导致上下文无法销毁的情况。在第一次发送响应后上下文也会随着销毁,导致了后续依赖上下文的代码无法正常使用。

<?php
namespace app\controller;

use Mcp\Capability\Attribute\McpTool;
use support\Request;

class UserController
{
    public function hello(Request $request)
    {
        $body = new CallbackStream();
        $context = clone Context::get();
        $callback = function () use ($body, $context) {
            Context::reset($context);
            return $body->getContents();
        };
        Coroutine::defer($callback);
        return 'test';
    }
}

真实场景是用于SSE定时发送消息。将SSE请求头放在response里面,然后在后台执行代码。代码依赖于之前的上下文才能正常工作。

112 0 0
0个回答

🔝