import { fetchEventSource } from "@microsoft/fetch-event-source";
const controller = new AbortController();
const signal = controller.signal;
export function sseRequset(index, data, successCallback, errCallback) {
fetchEventSource('/send_message/sse', {
method: "POST",
signal: signal,
headers: {
"Content-Type": "text/event-stream",
"Cache-Control": "no-cache",
Connection: "keep-alive",
},
openWhenHidden: true,//sse保活
body: JSON.stringify({
...data
}),
signal: signal,
async onopen(response) {
//建立连接的回调
console.log("链接成功", response);
},
onmessage(msg) {
console.log("成功的返回", msg);
successCallback(msg);
},
onclose(err) {
console.log("关闭的返回", err);
//正常结束的回调
controller.abort(); //关闭连接
},
onerror(err) {
//连接出现异常回调
console.log(err);
errCallback(err);
// // 必须抛出错误才会停止
// if (err instanceof FatalError) {
// throw err; // rethrow to stop the operation
// } else {
// // do nothing to automatically retry. You can also
// // return a specific retry interval here.
// }
},
});
}
export function sseClose() {
console.log("通知关闭封装的函数", err);
controller.abort(); //关闭连接
}
function isObject(obj) {
return typeof obj === "object";
}
sse流式请求封装
于 2024-04-10 14:26:56 首次发布