Keep backend runs alive on client disconnect
This commit is contained in:
@@ -110,10 +110,6 @@ export async function POST(req: Request) {
|
||||
writer.write({ type: "start-step" });
|
||||
|
||||
try {
|
||||
const cancelOnAbort = () => {
|
||||
void cancelClawRun(account.id, sessionId, streamState.runId);
|
||||
};
|
||||
req.signal.addEventListener("abort", cancelOnAbort, { once: true });
|
||||
const startedAt = Date.now();
|
||||
writer.write({ type: "reasoning-start", id: "reasoning-1" });
|
||||
writer.write({
|
||||
@@ -129,9 +125,7 @@ export async function POST(req: Request) {
|
||||
resumeId,
|
||||
writer,
|
||||
streamState,
|
||||
req.signal,
|
||||
);
|
||||
req.signal.removeEventListener("abort", cancelOnAbort);
|
||||
const elapsedMs = payload.elapsed_ms ?? Date.now() - startedAt;
|
||||
const text = formatClawResponse(payload);
|
||||
|
||||
@@ -351,13 +345,11 @@ async function callClawBackendStream(
|
||||
resumeSessionId?: string,
|
||||
writer?: UIMessageStreamWriter<UIMessage>,
|
||||
streamState?: StreamState,
|
||||
signal?: AbortSignal,
|
||||
): Promise<ClawChatResponse> {
|
||||
try {
|
||||
const response = await fetch(`${CLAW_API_URL}/api/chat/stream`, {
|
||||
method: "POST",
|
||||
headers: { "content-type": "application/json" },
|
||||
signal,
|
||||
body: JSON.stringify({
|
||||
prompt,
|
||||
runtime_context: runtimeContext,
|
||||
@@ -390,26 +382,6 @@ async function callClawBackendStream(
|
||||
}
|
||||
}
|
||||
|
||||
async function cancelClawRun(
|
||||
accountId: string,
|
||||
sessionId: string,
|
||||
runId?: string,
|
||||
) {
|
||||
try {
|
||||
await fetch(`${CLAW_API_URL}/api/runs/cancel`, {
|
||||
method: "POST",
|
||||
headers: { "content-type": "application/json" },
|
||||
body: JSON.stringify({
|
||||
account_id: accountId,
|
||||
session_id: sessionId,
|
||||
...(runId ? { run_id: runId } : {}),
|
||||
}),
|
||||
});
|
||||
} catch {
|
||||
// 浏览器关闭或网络中断时,取消请求本身也可能失败;后端流断开仍会结束本次响应。
|
||||
}
|
||||
}
|
||||
|
||||
async function consumeClawStream(
|
||||
body: ReadableStream<Uint8Array>,
|
||||
writer?: UIMessageStreamWriter<UIMessage>,
|
||||
|
||||
Reference in New Issue
Block a user