export function startAiSSE(
userMessage: string,
onChunk: (chunk: string) => void,
onClose: () => void,
onError: (err: any) => void
) {
const url = `http://localhost:3001/test`;
fetchEventSource(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
userMessage: userMessage,
}),
onmessage(ev) {
console.log("RAW DATA RECEIVED ON CLIENT:", ev.data);
try {
const parsedData = JSON.parse(ev.data);
if (parsedData.event === 'response.content_part.delta' || parsedData.event === 'response.content_part.done') {
const textChunk = parsedData.data?.part?.text || '';
if (textChunk) {
onChunk(textChunk);
}
}
} catch (e) {
console.error('Failed to parse SSE message data:', ev.data, e);
}
},
onclose() {
console.log('SSE connection closed.');
onClose();
},
onerror(err) {
console.error('SSE Error:', err);
onError(err);
throw err;
},
});
}
export function startAiSSE(
userMessage: string,
onChunk: (chunk: string) => void,
onClose: () => void,
onError: (err: any) => void
) {
const url = `http://localhost:3001/test`;
fetchEventSource(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
userMessage: userMessage,
}),
onmessage(ev) {
console.log("RAW DATA RECEIVED ON CLIENT:", ev.data);
try {
const parsedData = JSON.parse(ev.data);
if (parsedData.event === 'response.content_part.delta' || parsedData.event === 'response.content_part.done') {
const textChunk = parsedData.data?.part?.text || '';
if (textChunk) {
onChunk(textChunk);
}
}
} catch (e) {
console.error('Failed to parse SSE message data:', ev.data, e);
}
},
onclose() {
console.log('SSE connection closed.');
onClose();
},
onerror(err) {
console.error('SSE Error:', err);
onError(err);
throw err;
},
});
}