fix: handle extension relay session reuse

This commit is contained in:
Peter Steinberger
2026-01-24 04:41:14 +00:00
parent d9f173a03d
commit 6c3a9fc092
3 changed files with 81 additions and 3 deletions

View File

@@ -477,13 +477,23 @@ export async function ensureChromeExtensionRelayServer(opts: {
const targetType = attached?.targetInfo?.type ?? "page";
if (targetType !== "page") return;
if (attached?.sessionId && attached?.targetInfo?.targetId) {
const already = connectedTargets.has(attached.sessionId);
const prev = connectedTargets.get(attached.sessionId);
const nextTargetId = attached.targetInfo.targetId;
const prevTargetId = prev?.targetId;
const changedTarget = Boolean(prev && prevTargetId && prevTargetId !== nextTargetId);
connectedTargets.set(attached.sessionId, {
sessionId: attached.sessionId,
targetId: attached.targetInfo.targetId,
targetId: nextTargetId,
targetInfo: attached.targetInfo,
});
if (!already) {
if (changedTarget && prevTargetId) {
broadcastToCdpClients({
method: "Target.detachedFromTarget",
params: { sessionId: attached.sessionId, targetId: prevTargetId },
sessionId: attached.sessionId,
});
}
if (!prev || changedTarget) {
broadcastToCdpClients({ method, params, sessionId });
}
return;