in example-apps/chatbot-rag-app/frontend/src/store/provider.tsx [183:245]
async onmessage(event) {
if (event.event === 'FatalError') {
throw new FatalError(event.data)
}
if (event.data.startsWith(STREAMING_EVENTS.SESSION_ID)) {
const sessionId = event.data.split(' ')[1].trim()
dispatch(actions.setSessionId({ sessionId }))
} else if (event.data.startsWith(STREAMING_EVENTS.SOURCE)) {
const source = event.data.replace(
`${STREAMING_EVENTS.SOURCE} `,
''
)
try {
if (source) {
const parsedSource: {
name: string
page_content: string
url?: string
category?: string
updated_at?: string | null
} = JSON.parse(source.replaceAll('\n', ''))
if (parsedSource.page_content && parsedSource.name) {
dispatch(
actions.addSource({
source: {
name: parsedSource.name,
url: parsedSource.url,
summary: parsedSource.page_content,
icon: parsedSource.category,
updated_at: parsedSource.updated_at,
},
})
)
}
}
} catch (e) {
console.log('error', source, event.data)
console.error(e)
}
} else if (event.data === STREAMING_EVENTS.DONE) {
const sources = parseSources(message)
dispatch(
actions.setMessageSource({
id: conversationId,
sources,
})
)
dispatch(actions.setStatus({ status: AppStatus.Done }))
} else {
message += event.data
dispatch(
actions.updateMessage({
id: conversationId,
content: message.replace(/SOURCES:(.+)*/, ''),
})
)
}
},