小程序支持
// 小程序支持
const requestTask = uni.request({
url: "http://192.168.1.66/chat/sse",
timeout: 15000,
responseType: "text",
method: "post",
enableChunked: true, //配置这里
data: { question: "你好" },
success: (response) => {
console.log("成功", response);
},
fail: (error) => {
console.log("失败", error);
},
complete: (res) => {
let ret = JSON.stringify(res);
console.log("完成", ret);
},
});
requestTask.onHeadersReceived(function (res) {
console.log("开始", res.header);
});
// 这里监听消息
requestTask.onChunkReceived(function (res) {
let decoder = new TextDecoder("utf-8");
let str = decoder.decode(new Uint8Array(res.data));
let falgData = JSON.parse(str.split("data: ")[1]);
msg.value += falgData.data;
console.log("接收数据", falgData.data);
// setTimeout(() => {
// // 中断请求任务
// requestTask.abort();
// }, 3000);
});
H5支持
// H5支持
import { fetchEventSource } from "@microsoft/fetch-event-source";
const ctrl = new AbortController(); //用于中断请求
fetchEventSource("http://192.168.1.66/chat/sse", {
method: "POST",
headers: {
"Content-Type": "application/json",
// "Content-Type": "text/event-stream",
},
body: JSON.stringify({
question: "你好",
}),
// signal: ctrl.signal, // 用于中断请求
onopen(response) {
console.log("连接成功", response);
},
onmessage(msg) {
console.log("接收", msg);
},
onclose() {
console.log("连接关闭");
},
onerror(err) {
console.log("连接错误", err);
},
});