optimize page load check in getCompletion method
This commit is contained in:
+65
-45
@@ -214,6 +214,18 @@ class YouProvider {
|
|||||||
const { page, browser } = session;
|
const { page, browser } = session;
|
||||||
const emitter = new EventEmitter();
|
const emitter = new EventEmitter();
|
||||||
|
|
||||||
|
// 检查页面是否已经加载完成
|
||||||
|
const isLoaded = await page.evaluate(() => {
|
||||||
|
return document.readyState === 'complete' || document.readyState === 'interactive';
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!isLoaded) {
|
||||||
|
console.log('页面尚未加载完成,等待加载...');
|
||||||
|
await page.waitForNavigation({ waitUntil: 'domcontentloaded', timeout: 10000 }).catch(() => {
|
||||||
|
console.log('页面加载超时,继续执行');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// 计算用户消息长度
|
// 计算用户消息长度
|
||||||
let userMessage = [{ question: "", answer: "" }];
|
let userMessage = [{ question: "", answer: "" }];
|
||||||
let userQuery = "";
|
let userQuery = "";
|
||||||
@@ -378,57 +390,65 @@ class YouProvider {
|
|||||||
var url = "https://you.com/api/streamingSearch?" + req_param.toString();
|
var url = "https://you.com/api/streamingSearch?" + req_param.toString();
|
||||||
console.log("正在发送请求");
|
console.log("正在发送请求");
|
||||||
emitter.emit("start", traceId);
|
emitter.emit("start", traceId);
|
||||||
page.evaluate(
|
try {
|
||||||
async (url, traceId) => {
|
await page.evaluate(
|
||||||
var evtSource = new EventSource(url);
|
async (url, traceId) => {
|
||||||
var callbackName = "callback" + traceId;
|
var evtSource = new EventSource(url);
|
||||||
evtSource.onerror = (error) => {
|
var callbackName = "callback" + traceId;
|
||||||
window[callbackName]("error", error);
|
evtSource.onerror = (error) => {
|
||||||
evtSource.close();
|
window[callbackName]("error", error);
|
||||||
};
|
|
||||||
evtSource.addEventListener(
|
|
||||||
"youChatToken",
|
|
||||||
(event) => {
|
|
||||||
var data = event.data;
|
|
||||||
window[callbackName]("youChatToken", data);
|
|
||||||
},
|
|
||||||
false
|
|
||||||
);
|
|
||||||
evtSource.addEventListener(
|
|
||||||
"done",
|
|
||||||
(event) => {
|
|
||||||
window[callbackName]("done", "");
|
|
||||||
evtSource.close();
|
evtSource.close();
|
||||||
fetch("https://you.com/api/chat/deleteChat", {
|
};
|
||||||
headers: {
|
evtSource.addEventListener(
|
||||||
"content-type": "application/json",
|
"youChatToken",
|
||||||
},
|
(event) => {
|
||||||
body: JSON.stringify({ chatId: traceId }),
|
var data = event.data;
|
||||||
method: "DELETE",
|
window[callbackName]("youChatToken", data);
|
||||||
});
|
},
|
||||||
},
|
false
|
||||||
false
|
);
|
||||||
);
|
evtSource.addEventListener(
|
||||||
|
"done",
|
||||||
|
(event) => {
|
||||||
|
window[callbackName]("done", "");
|
||||||
|
evtSource.close();
|
||||||
|
fetch("https://you.com/api/chat/deleteChat", {
|
||||||
|
headers: {
|
||||||
|
"content-type": "application/json",
|
||||||
|
},
|
||||||
|
body: JSON.stringify({ chatId: traceId }),
|
||||||
|
method: "DELETE",
|
||||||
|
});
|
||||||
|
},
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
evtSource.onmessage = (event) => {
|
||||||
|
const data = JSON.parse(event.data);
|
||||||
|
if (data.youChatToken) {
|
||||||
|
window[callbackName](youChatToken);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
// 注册退出函数
|
||||||
|
window["exit" + traceId] = () => {
|
||||||
|
evtSource.close();
|
||||||
|
};
|
||||||
|
},
|
||||||
|
url,
|
||||||
|
traceId
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("评估过程中出错:", error);
|
||||||
|
emitter.emit("error", error);
|
||||||
|
return { completion: emitter, cancel: () => {} };
|
||||||
|
}
|
||||||
|
|
||||||
evtSource.onmessage = (event) => {
|
|
||||||
const data = JSON.parse(event.data);
|
|
||||||
if (data.youChatToken) {
|
|
||||||
window[callbackName](youChatToken);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
// 注册退出函数
|
|
||||||
window["exit" + traceId] = () => {
|
|
||||||
evtSource.close();
|
|
||||||
};
|
|
||||||
},
|
|
||||||
url,
|
|
||||||
traceId
|
|
||||||
);
|
|
||||||
const cancel = () => {
|
const cancel = () => {
|
||||||
page?.evaluate((traceId) => {
|
page?.evaluate((traceId) => {
|
||||||
window["exit" + traceId]();
|
window["exit" + traceId]();
|
||||||
}, traceId);
|
}, traceId).catch(console.error);
|
||||||
};
|
};
|
||||||
|
|
||||||
return { completion: emitter, cancel };
|
return { completion: emitter, cancel };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user